java设计模式总结

设计模式6大原则

(1)开闭原则:对拓展开放,对修改关闭

(2)里氏替换原则:基类能被子类替换

(3)依赖倒转原则:依赖于抽象,不依赖于具体

(4)接口隔离原则:尽量分开设计接口

(5)最少知道原则:功能模块实体尽量相互独立

(6)合成复用原则:组合优于继承

 

一、创建型模式:

1.工场方法模式Factory

实现对同一个接口的一些类的实例的创建

 

2.抽象工场模式Abstract Factory

工场类也用接口进行抽象,不同的需求,实现不同的工场类

 

3.单例模式Singleton

构造函数设成私有,防止外部直接new初始化。利用JVM类初始化只进行一次且是的线程安全。只提供一个public方法获取实例。

SingletonFactory.instance优于直接return instance;

 

4.建造者模式Builder

多个工场组成的数组

 

5.原型模式Prototype

对象作为原型复制。浅拷贝和深拷贝区别:深拷贝会把引用的对象也拷贝,浅拷贝只是简单的改变引用,内存还是指向同一个对象。

 

二、结构性模式

1.适配器模式

将某个类Source的接口method转换为另一个接口Target,进行接口适配。

类的适配器:直接继承Source,实现Target

对象适配器:持有Source实例,实现Target

接口适配器:用抽象类实现接口进行适配,目标类继承抽象类,实现具体方法。

 

2.装饰模式Decorator

给对象(被装饰的对象Source)动态添加新的功能,都实现同一接口Sourceable,装饰类Target持有Sourceable对象

 

3.代理模式Proxy

代理类控制原对象的访问,也是实现同一接口Sourceable,但Target持有的是Source对象,编译时确定代理关系。

 

4.外观模式Facade

解决类与类之间的依赖关系,如Spring.

Computer -> {CPU,Memory,Disk}

 

5.桥接模式Bridge

使事物和实现分开,使各自独立变化,如JDBC桥DriverManager->Driver{MySqlDriver,OracleDriver,DB2Driver}

 

6.组合模式Composite

整体-部分,类似树形结构

 

7.享元模式FlyWeight

实现对象的共享,减少内存的开销,如JDBC连接池的属性url,username对于每个连接来说都是一样的。

 

三、行为型模式

1.策略模式Strategy

定义一系列算法,且把算法封装起来。设计一个接口,为一系列实现类提供统一的方法。

 

2.模板方法模式Template Method

抽象类,有n个方法,可以抽象或实际方法。定义子类继承抽象类,重写方法,调用抽象类,实现对子类的调用。

 

3.观察者模式Observer

当一个对象变化时,依赖该对象的对象都会收到通知,随之变化。

 

4.迭代器模式Iterator

顺序访问集合的对象。自定义迭代器持有集合的对象。

 

5.责任链模式Chain of Responsibility

对象持有下一个对象的引用,形成一条链,请求一直传递直到处理请求。封装隐藏

 

6.命令模式Command

调用者Invoker->命令Command->接收者Receiver

Command持有Receiver对象的引用

 

7.备忘录模式Memento

保存一个对象的状态,以便在适当的时候恢复对象。

 

8.状态模式State

当对象的状态改变,同事改变其行为。

 

9.访问者模式Visitor

分离对象数据结构的行为和方法,达到为被访问者动态添加新的操作而无需做其他的修改。

适用场景:为一个现有的类增加新的功能。

 

10.中介者模式Mediator

类与类之间的解耦,类似spring。通过接口封装,持有原来对象的引用。

 

11.解释器模式Interpreter

OOP开发中的编译器的开发

 

 

 

 

 

 

 

 

posted @ 2014-02-24 11:04  菜鸟程序员的奋斗&  阅读(190)  评论(0编辑  收藏  举报