之前写的命令模式尽管优化了一次,但是还是觉得太复杂了,以后如果再添加更多的操作时,还是要新建更多的类,这样到后面就会出现一个开发中巨大的问题:类爆炸!
无数个类挤在一起看着非常冗余,这时候有好的解决方案吗?
答案肯定是有的,不然我也不会接着写这篇简书了。
用什么呢?
我们这次用block!
用了block之后,命令模式就是变异了,但依然是命令模式,也就是命令模式的变种。
闲话不多说,上干活
首先,我们创建一个动态命令类
然后做什么呢?
我们要让这个动态命令类遵循之前的GameCommandProtocol协议
遵循协议之后,我们还要创建一个block
接着就是初始化了
接下来的操作就有点不一样了,注意了
看到这个类方法没!?
这个就是我们外部调用并且回调的函数,它在内部已经帮我们初始化了,所以后面当要用到这个类的时候只需要调用它就行了
第二步:我们再创建一个动态命令管理者的类
这个类就是用来替代之前GameManager类
内部方法大同小异,但是有个重点是之前没有的
这个方法就是动态命令调用的核心
通过方法名获取方法对象,然后调用createCommand这个方法,顺便将该对象存入数组中,这几句代码需要大家好好研究下
剩下的步骤就很简单了,调用方法就行了
这时候我们的main函数里面是怎么样的呢?
这个是不是更简单了
不用new各种类的对象,代码简单明了
最后附上demo链接:命令模式demo
下一篇介绍复合命令:iOS设计模式之命令模式(3.复合命令) - 简书
网友评论