下班了,快速打开游戏,今天玩原神,鉴于会玩的游戏太多了,要进行一次选择
执行结果:
完美
但又不完全完美。
如果我这辈子都只会这三个游戏,那这个逻辑没有任何问题,简明清晰,简直完美;但是我如果不定期就会去尝试新游戏的话,这段代码的问题就出现了,我要不断的修改这段代码,不断的加if-else,意味着要对老代码不断的翻新,吐了。
不想遭受上面的苦难就要重构一下代码了。
1.首先要把游戏归类,将上述代码对具体游戏的依赖抽离出来,将对对象的依赖转为对接口的依赖
这时的各个游戏单独声明为策略类,且继承游戏接口
2.到这里还没有消除if-else,因为在启动的时候还是要判断是什么游戏,然后创建这个游戏的实例再调用游戏的启动。
接下来将“使游戏启动”这个行为独立出来,控制权交出我
关键步骤来了,
我知道我会玩的游戏有哪些:
我可以根据要打开的游戏名称找到对应的游戏,并启动游戏:
此时的我是这样的我:
最后,看看再次要打开游戏的时候是什么样的
执行一下:
刚才的if-else全没了,接下来当我想玩一个新游戏时只需要:
1.添加新的游戏类
2.在我会玩的游戏里把这个游戏添加进去
游戏传入数据变成新的游戏:
执行:
完美。
优势是无论输入的是什么,主函数里执行的代码没有再经过修改:
劣势是…有这时间我一万个if-else都写完了
11.11,YJK-GAMA公测开启
加入QQ群,您有机会成为我们
首批尊贵用户
转自:非解构-公众号
转自:非解构-公众号