IOS设计架构模式:桥接-工厂-享元模式
一,桥接模式
定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
原理:抽象层与实现层相分离,抽象层定义了供客户段调用的抽象接口,实现层提供了具体的逻辑,实现类的应用被封装到抽象层的实例中。
UML图如下:
模式使用场景:1,如果一个系统需要在构建的抽象化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承关系,通过桥接模式可以使它们在抽象层建立一个关联关系0.2,对于哪些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用0.3,一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。
比如,一个小米遥控器对应一个小米电视机,一个康佳遥控器对应一个康佳电视机,能不能想办法把各个品牌的遥控器统一抽象出来成一个万能的遥控器去对应所有品牌的电视机呢?
github上的演示有详细内容:https://github.com/GengbinZ/BridgeDemo-
二,工厂模式:简单工厂,工厂方法,抽象工厂
1,简单工厂:简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
作用:用来生产同一等级结构中的任意产品(不支持拓展增加产品)
UML图:
2,工厂方法:工厂方法模式,又称工厂模式,多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。
作用:用来生产同一等级结构中的固定产品(支持拓展增加产品)
UML图:
3,抽象工厂:抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。可以理解成是多个工厂方法的组合。
作用:用来生产不同产品族的全部产品(不支持拓展增加产品;支持增加产品族)
UML图:
不说太多,直接看演示代码,链接:https://github.com/GengbinZ/-
https://github.com/GengbinZ/FactoryMethod
https://github.com/GengbinZ/AbstractFactory
三,享元模式:相同的数据就拿来共享,具有2个特点:1,可享享元对象2,享元池
使用范围:服务器端的查询火车票,IOS的多线程(线程池),的UITableViewCell,UICollectionViewCell
UML图:
demo代码链接:https://github.com/GengbinZ/FlyWeightDemo