• 设计模式-分类


    精华文章:http://blog.csdn.net/column/details/sjmsxgjs.html

          http://www.cnblogs.com/beijiguangyong/archive/2010/11/15/2302807.html

    1. 创建型(Creational): 用于怎样创建一个对象。通常包括隔离对象创建的细节,这样代码不依赖于对象是什么类型,因此在增加一个新的对象类型时不需要改变代码。

        包括有 Factory Method(工厂方法) Abstract Factory(抽象工厂) Builder(建造者) Prototype(原型) Singleton(单例)。

      2. 结构型(Structural): 影响对象之间的连接方式,确保系统的变化不需要改变对象间的连接。结构型模式常常由工程项目限制条件来支配。

        包括有适配器模式(Adapter Pattern)桥接模式(Bridge Pattern)过滤器模式(Filter、Criteria Pattern)组合模式(Composite Pattern)装饰器模式(Decorator Pattern)

        外观模式(Facade Pattern)享元模式(Flyweight Pattern)代理模式(Proxy Pattern)

      3.行为型(Behavioral): 在程序中处理具有特定操作类型的对象。这些对象封装要执行的操作过程,比如解释一种语言,实践一个请求,遍历一个序列(如像在一个迭代器里),或者实现一个算       法。

        包括有 Interpreter(解释器) Template Method(模板方法) Chain of Responsibility(责任链) Command(命令) Iterator(迭代器) Mediator(中介者) Memento(备忘录) Observer(观察者) State(状态) Strategy(策略) Visitor(访问者)

    设计模式的六大原则

      

    1、开闭原则(Open Close Principle)

    开闭原则的意思是: 对扩展开放,对修改关闭 。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。

    2、里氏代换原则(Liskov Substitution Principle)

    里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

    3、依赖倒转原则(Dependence Inversion Principle)

    这个原则是开闭原则的基础,具体内容:针对对接口编程,依赖于抽象而不依赖于具体。

    4、接口隔离原则(Interface Segregation Principle)

    这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。

    5、迪米特法则,又称最少知道原则(Demeter Principle)

    最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。

    6、合成复用原则(Composite Reuse Principle)

    合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。

    下面用一个图片来整体描述一下设计模式之间的关系:

  • 相关阅读:
    点击表单提交 却打开了另存为对话框
    js中对象的复制,浅复制(浅拷贝)和深复制(深拷贝)
    html怎么隐藏input标签
    莫名其妙地改变了数组的值,原来是……
    addEventListener 用法
    JavaScript DOM元素常见操作详解【添加、删除、修改等】
    MySQL用户权限验证与管理方法详解
    mysql如何修改root用户的密码
    python案例
    IDEA启动报 Error:java: JDK isn't specified for module 'xxx' 已解决
  • 原文地址:https://www.cnblogs.com/zhehan54/p/5422931.html
Copyright © 2020-2023  润新知