iOS 设计模式记录
未完
设计模式分类
设计模式简介
1. 桥接模式-(一般没人用)
定义:将抽象部分与实现部分分离,使它们可以独立的变化
原理:抽象层与实现层相分离,抽象层定义了供客户端调用的抽象接口,实现层提供了具体的实现逻辑,实现类的引用被封装到抽象层的实例中,桥接就形成了。
2. 策略模式
示例地址 :https://github.com/yuewenyan/strategyDemo.git
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
原理:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。看到策略模式的时候有的时候跟简单工厂相比较,其实有很大的迷惑性,都是继承多态感觉没有太大的差异性,简单工厂模式是对对象的管理,策略模式是对行为的封装。策略模式的核心就是对算法变化的封装。
定义一个通用算法协议,让每个算法遵守其规则
优点:
1、 提供了管理相关的算法族的办法。可以封装一些算法,不想让算法直接暴露出来。
2、可以避免使用多重条件转移语句,消除根据类型决定使用什么算法的一些if-else的语句。
缺点:
1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道所有的算法或行为的情况。,使用中不能动态改变,在实例话的时候就设定好需要使用的策略类了。
2、 策略模式造成很多的策略类,每个具体策略类都会产生一个新类。有时候可以通过把依赖于环境的状态保存到客户端里面,而将策略类设计成可共享的,这样策略类实例可以被不同客户端使用。换言之,可以使用享元模式来减少对象的数量。
3. 工厂模式 (简单工厂,抽象工厂,)