• 【转】一句话的设计模式


    原文地址:http://www.cnblogs.com/lzhlyle/p/4696645.html

    设计模式分为三类:1.创建型模式:与对象的创建有关。 2.结构性模式:处理类与对象的组合。 3.行为性模式:对类或对象怎样交互和怎样 分配职责进行描述。

    面向对象设计的2个基本原则: 1.针对接口编程,而不是针对实现编程。 2.优先使用对象组合,而不是类继承。

    面向对象设计的5个设计原则: 1.单一职责原则(SRP) 2.开放封闭原则(OCP)  3.Liskov替换原则(LSP) 4.依赖倒置原则(DIP) 5.接口隔离原则(ISP)

    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)迭代器:将对集合的访问与遍历从集合对象中分离出来到迭代器中。

  • 相关阅读:
    转物理老师的说说,过好自己的生活,别人的梦幻生活背后也有你看不见的无奈
    第一、二、三、BC范式的学习总结
    一位毕业四年的前辈的经历
    普里姆算法,克鲁斯卡尔算法,迪杰斯特拉算法,弗洛里德算法
    从零开始构建JavaScript框架4——DOM遍历2
    从零开始构建JavaScript框架3——DOM遍历1
    从零开始构建JavaScript框架2——总体结构以及元素的获取和创建
    从零开始构建JavaScript框架1——为何JavaScript开发需要框架
    从浏览器输入URL到页面加载完成到底发生了什么?
    第5课 C语言指针深入1
  • 原文地址:https://www.cnblogs.com/liangstudyhome/p/4700116.html
Copyright © 2020-2023  润新知