欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式

程序员文章站 2022-03-17 16:49:04
...

        本文摘自http://blog.csdn.net/longyulu/article/details/9159589

       

一、设计模式的分类

    1、创建型:工厂方法(Factory Method)、抽象工厂(Abstract Factory)、单例(singleton)、建造者(builder)、原型(prototype)。

    2、结构型:适配器(Adapter)、装饰(Decorator)、代理(Proxy)、外观(Facade)、桥接(Bridge)、组合(Composite)、享元(Flyweight)。

    3、行为型:策略(strategy)、模板方法(Template Method)、观察者(Observer)、迭代(Iterator)、责任链(Chain of Responsility)、命令(Command)、备忘录(Memento)、状态(State)、访问者(Visitor)、中介者(Mediator)、解释器(Interpreter)

 

二、设计模式的原则

    1、开闭原则:对扩展开放,对修改关闭。

    2、单一职责原则。

    3、里氏替换原则:任何基类可以出现的地方,子类一定可以出现。

    4、依赖倒转原则:面向接口编程,依赖于抽象而不依赖于具体。

    5、接口隔离原则:每个接口中不存在子类用不到而必须实现的方法。

    6、迪米特法则(最少知道原则):一个类对自己依赖的类知道的越少越好。

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

三、设计模式的描述

    1、工厂方法模式:创建一个工厂接口和多个工厂实现类,需要增加新的功能时,直接增加新的工厂类,不需要修改之前的代码。

    2、抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。每个具体工厂类可以创建多个具体产品类实例。

    3、单例模式:一个JVM中,该对象只有一个实例存在。

    4、建造者模式:把一个比较复杂的对象的构建封装到一个单独的Builder里面

    5、原型模式:将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。

 

    6、适配器模式:将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。

    7、装饰器:给一个对象动态增加一些新的功能,要求被装饰的对象和装饰的对象实现同一个接口,装饰对象持有被装饰对象的实例。

    8、代理:用一个代理类,替原对象进行一些操作。

    9、外观模式:将类和类之间的关系放到一个Facade类中,降低类类之间的耦合度。

    10、桥接模式:将抽象化与实现化解耦,使得二者可以独立变化。

    11、组合模式:将多个对象组合在一起进行操作,常用于表示树形结构中。

    12、享元模式:实现对象的共享,即共享池。

 

父类与子类关系

    13、策略模式:定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,不会影响到使用它们的客户。需要设计一个接口,为他们提供一个统一的方法,多个实现类实现这个方法,设计一个抽象类,提供辅助函数。

    14、模板方法:一个抽象类中有一个主方法,再定义n个方法,可以是抽象的,也可以是实现的方法,定义一个类继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。

 

类之间的关系

    15、观察者:当一个对象发生变化时,其它依赖该对象的对象都会收到通知,并且随着变化。

    16、迭代:顺序访问聚集中的对象。

    17、责任链:有多个对象,每个对象持有对下一个对象的引用。这样形成一条链条,请求在链条上传递,直到某一对象决定处理该请求。但发出者不知道最终谁处理该请求。

    18、命令模式:实现请求和执行分开。

 

类的状态

    19、备忘录:保存一个类的某个状态,以便在适当的时候恢复对象。

    20、状态:当对象的状态改变时,同时改变其行为。

 

中间类

    21、访问者:把数据结构和用于结构上的操作解耦,使得操作集合可以相对*的演化。

    22、中介者:只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行。

    23、解释器:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。