iOS设计模式之命令模式(2.动态命令)

2018-08-27  本文已影响0人  项啊丑

之前写的命令模式尽管优化了一次,但是还是觉得太复杂了,以后如果再添加更多的操作时,还是要新建更多的类,这样到后面就会出现一个开发中巨大的问题:类爆炸!

无数个类挤在一起看着非常冗余,这时候有好的解决方案吗?

答案肯定是有的,不然我也不会接着写这篇简书了。

用什么呢?

我们这次用block!

用了block之后,命令模式就是变异了,但依然是命令模式,也就是命令模式的变种。

闲话不多说,上干活

首先,我们创建一个动态命令类

然后做什么呢?

我们要让这个动态命令类遵循之前的GameCommandProtocol协议

遵循协议之后,我们还要创建一个block

接着就是初始化了

接下来的操作就有点不一样了,注意了

看到这个类方法没!?

这个就是我们外部调用并且回调的函数,它在内部已经帮我们初始化了,所以后面当要用到这个类的时候只需要调用它就行了

第二步:我们再创建一个动态命令管理者的类

这个类就是用来替代之前GameManager类

内部方法大同小异,但是有个重点是之前没有的

这个方法就是动态命令调用的核心

通过方法名获取方法对象,然后调用createCommand这个方法,顺便将该对象存入数组中,这几句代码需要大家好好研究下

剩下的步骤就很简单了,调用方法就行了

这时候我们的main函数里面是怎么样的呢?

这个是不是更简单了

不用new各种类的对象,代码简单明了

最后附上demo链接:命令模式demo

下一篇介绍复合命令:iOS设计模式之命令模式(3.复合命令) - 简书

上一篇下一篇

猜你喜欢

热点阅读