Java--设计模式心得体会

 

一、策略模式:算法

策略模式就是将可以通用的算法,封装成不一样的组件,实现同一个接口,使之能够互换。数据库

例子:SpringMVC的9大组件,都采用策略模式。好比HandlerMethodArgumentResolver,有很是多不一样的实现类,这些实现类均可以互相替换来处理不一样类型的参数,这就是策略模式。设计模式

策略模式与模板方法模式的区别:好比一个抽象类有一个抽象方法,每一个实现该抽象方法的具体实现都不一样,就是模板方法模式,通常在抽象类中会有逻辑处理,只是用到了抽象的模板方法时,交给具体的子类去不一样实现。缓存

若是一个模板方法,被子类实现时,实现方式大都相同,好比模板方法为处理字符(10个子类可能只有两种实现,一种是处理为UTF-8,一种是处理成GBK),那么这个模板方法就应该使用策略模式。框架

 

二、观察者模式:ide

观察者模式就是将“观察者”注册给“被观察者”,当被观察者发生改变时,可以及时的通知全部观察者。性能

例子:好比listener或者事件触发等,都是观察者模式this

 

三、装饰者模式:spa

装饰者模式就是在没必要改变原类文件和使用继承的状况下,动态的扩展对象的的功能。好比你有一个真实对象,有一个包装对象,两个对象都必须实现同一个接口A;可是在进行包装的时候,包装对象须要引用真实对象,而后在真实对象的基础上进行功能扩展,最后返回的都是接口A的对象。可是已经被包装过了,扩展了功能。设计

例子:Java里面的Inputstream与OutputStream就是典型的装饰者模式。

 

四、工厂方法模式

工厂方法模式就是定义一个建立对象的接口,里面有一个建立对象的方法。经过继承或者实现,将对象的建立交给子类。而调用者只用使用接口就能够了,不用关心具体的对象是怎么建立出来的。

 

五、抽象工厂模式

抽象工厂模式就是定义一个为建立一组(多个)相关或者相依赖的对象的接口,而调用者无需关心具体的建立对象的实现类。

工厂方法模式与抽象工厂模式的区别:当抽象工厂模式定义的接口中只能建立一个对象,那么“抽象工厂模式”就退化成为了“工厂方法模式”。

 

六、单例模式

单例模式这个就很少说了,哈哈,地球人都知道。

 

七、命令模式

命令模式就是把请求封装成命令对象,“调用者”就是将“命令对象”传递给“处理对象”。

 

八、适配器模式

适配器模式就是将一个接口转换成为另外一个接口。

 

九、外观模式

外观模式提供了一个统一的接口,用来访问系统中的一群接口。外观模式定义了一个高层接口,让使用变得更加容易(不用再去调用一群接口,外观接口已经将一群接口封装好了)。

 

十、模板方法模式

模仿方法模式定义一个操做中算法的框架,而将一些步骤延迟到子类中,使得子类能够不改变算法的结构便可重定义该算法中的某些特定步骤。

(让子类来实现具体的抽象方法)

 

十一、迭代器模式

迭代器模式就是Iterator接口,使得客户能够顺序得访问对象中的各个元素,又不暴露对象内部的细节。

 

十二、组合模式

当你将对象的组合(多个对象)组成树结构来展示,那么无论你这个对象是节点(还包含子节点),仍是叶子节点(不包含子节点),均可以用一致的方式进行处理。

 

1三、状态模式

状态模式是指当前对象把处理本身不一样状态的的行为对象,都封装成为本身的属性。当状态发生改变时,调用不一样的行为对象,执行不一样的操做。(看起来就好像类发生了改变同样)

 

1四、代理模式

为另外一个对象提供一个替身或占位符以访问这个对象(包装一个对象,并控制对它的访问)

 

1五、复合模式

复合模式结合两个或以上的模式,组成一个解决方案,解决一再发生的通常性问题。(MVC模式就是典型的符合模式;其中Model是观察者模式,发生改变后通知View;View是组合模式,经过各类不一样的组件嵌套组成一个完整的View展示用户界面;Controller是策略模式,不一样的View可使用不一样的Controller处理不一样的业务)

 

1六、桥接模式

 

1七、建造者(生成器)模式

将一个复杂对象的构建与它的表示分离,使得一样的构建过程能够建立不一样的表示。Spring里面的FactoryBean就是建造者模式

 

1八、责任链模式

使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。(责任链就是一个链表结构,头结点处理完成之后再决定是否要交由下一个节点继续处理,直到没有下一个节点或者其中对象终止责任链)

 

1九、蝇量模式(享元模式)Flyweight Pattern

享元模式尝试重用现有的同类对象,若是未找到匹配的对象,则建立新对象。

应用实例: JAVA 中的 String,若是有则返回,若是没有则建立一个字符串保存在字符串缓存池里面。

 

20、解释器模式

 

2一、中介者模式

中介者模式(Mediator Pattern)是用来下降多个对象和类之间的通讯复杂性。这种模式提供了一个中介类,该类一般处理不一样类之间的通讯,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。

 

2二、备忘录模式

备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。

应用实例: 一、后悔药。 二、打游戏时的存档。 三、Windows 里的 ctri + z。 四、IE 中的后退。 四、数据库的事务管理。

 

2三、原型模式

原型模式(Prototype Pattern)是用于建立重复的对象,同时又能保证性能。这种类型的设计模式属于建立型模式,它提供了一种建立对象的最佳方式。

应用实例: 一、细胞分裂。 二、JAVA 中的 Object clone() 方法。三、Java序列化与反序列化能够实现深度克隆

 

2四、访问者模式

访问者模式拥有访问者类,与被访问元素类。元素类经过接受访问者类对象,而且将自身的引用交给访问者,这样访问者就可使用元素类。

/**
*ComputerPart就是被访问的元素
*ComputerPart经过accept方法接收访问者
*ComputerPartVisitor就是访问者
*/
public interface class ComputerPart {
   public void accept(ComputerPartVisitor computerPartVisitor);
}

/**
*Keyboard就是被访问的元素
*Keyboard实现ComputerPart接口,经过accept方法接收访问者
*Keyboard经过回调访问者computerPartVisitor的visit方法,将自身对象*传给访问者,访问者即可以使用被访问的元素了
*/
public class Keyboard  implements ComputerPart {

   @Override
   public void accept(ComputerPartVisitor computerPartVisitor) {
      computerPartVisitor.visit(this);
   }
}
相关文章
相关标签/搜索