本帖最后由 惜 于 2018-12-24 10:38 编辑
C#设计模式 目录
说明
1. 创建型:
(1)单例:只需一个实例时考虑。 (2)工厂方法:一般先用工厂方法解决物件创建问题。 (3)抽象工厂:当工厂方法无法满足多系列问题时,再重构为抽象工厂。 (4)建造者:多个部件的建造实现相同,只是所需部件、建造顺序不同时考虑。 (5)原型:在初始化资讯不发生变化时考虑。 2. 结构型:
(1)适配器:让介面不相容的类能协同工作。(亡羊补牢)
(2)装饰:动态增加单个物件的额外职责,比生成子类更灵活。
(3)桥接:使继承关系更改为组合关系,使两者可独立变化。(未雨绸缪)
(4)组合:用树状结构表示“整体-部分”的层次关系,使单个物件(叶节点)与组合物件(枝节点)的
使用具有一致性。
(5)享元:为运用共用技术,支援大量细粒度物件,节省开销。
(6)代理:控制对单个物件的访问。
(7)外观:子系统的高层介面,避免两个类直接关系的第三者。
3. 行为型:
(1)观察者:一对多依赖关系,一端变化、多端得到通知并自动更新。(目标与观察者可实现弱藕合)
(2)范本方法:继承+重写解决代码重複问题。
(3)命令:将请求发送者与具体实现者解藕,可对请求排列、取消、重做,支援事务。(多请求,单处理)
(4)职责链:将处理者排成链,沿链传递请求。(单请求,多处理)
(5)状态:当物件内状态改变而执行不同操作时考虑,状态转移逻辑不在 if/switch 中,而在各子类之间,
增/改状态和状态转换较容易。
(6)解释器:若某特定问题发生的频率足够高时考虑,需定义文法表示与解释器本身。
(7)中介者:由仲介封装一系列物件交互,减少物件间藕合,利于複用。(朋友多)
(8)访问者:当 Element 较稳定、Visitor 易增加时考虑。(朋友在精不在多)
(9)策略:将一系列演算法逐个封装并可相互替换,易于切换、理解、扩展。
(10)备忘录:不破坏封装,又要取该物件内状态,且要求状态还原时考虑。(保持封装边界)
(11)迭代器:将对集合的访问与遍曆从集合物件中分离出来到迭代器中。体字按钮进行在线转换
|