设计模式(23种)

分类

建立型模式(5):工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。java

结构型模式(7):桥接模式、装饰者模式、代理模式、适配器模式、组合模式、外观模式、享元模式。算法

行为型模式(11):策略模式、观察者模式、模板方法、命令模式、状态模式、职责链模式、解释器模式、中介者模式、访问者模式、备忘录模式、迭代器模式。数据库

六大原则

一、单一职责原则编程

  一个类只负责一个功能领域中的相应职责。 设计模式

二、开闭原则spa

  一个实体对扩展开放,对修改关闭。即软件实体应尽可能在不修改原有代码的状况下进行扩展。线程

三、里氏代换原则设计

  任何基类能够出现的地方,子类必定能够出现。代理

四、依赖倒置原则日志

  抽象不该该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

五、接口隔离原则

  使用多个专门的接口,而不使用单一的总接口。

六、迪米特法则(最少知道原则)

  一个实体应当可能少地与其余实体发生相互做用,使得系统功能模块相对独立。

经常使用的设计模式(后续会完善补充)

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

应用:

1.  java.lang.Runtime;

2.  日志文件

3.  配置文件

4.  打印机

5.  回收站

6.  任务管理器

7.  数据库链接池

8.  线程池

(简单工厂模式:又叫静态工厂方法模式,它定义一个具体的工厂类负责建立一些类的实例)

工厂模式:定义一个用于建立对象的接口,让子类决定实例化哪个类,工厂方法使一个类的实例化延迟到其子类。

应用:

1.       Collection中的iterator方法;

2.       java.lang.Proxy#newProxyInstance()

3.       java.lang.Object#toString()

4.       java.lang.Class#newInstance()

5.       java.lang.reflect.Array#newInstance()

6.       java.lang.reflect.Constructor#newInstance()

7.       java.lang.Boolean#valueOf(String)

8.       java.lang.Class#forName()

桥接模式:将抽象部分与实现部分分离,使它们均可以独立的变化。

应用:

1.  Collections类中的sort()方法;

2.  JDBC数据库访问接口API;

装饰者模式:对已有的业务逻辑进一步的封装,使其增长额外的功能。即向一个现有的对象添加新的功能,同时又不改变其结构。

应用:

1.  Java I/O使用装饰模式设计

代理模式:一个类代理另外一个类的功能。

应用:

1.  java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。

2.  远程代理

适配器模式:将一个类的接口转换成客户但愿的另一个接口。Adapter模式使得本来因为接口不兼容而不能一块儿工做的那些类能够在一块儿工做。

应用:

1.  java.io.InputStreamReader(InputStream)

2.  java.io.OutputStreamWriter(OutputStream)

策略模式:将多个算法封装到具备共同接口的独立的类中,从而使得它们能够相互替换。

应用:

1.       java.util.Comparator#compare()

2.       javax.servlet.http.HttpServlet

3.       javax.servlet.Filter#doFilter()

4.  TreeSet的排序功能

5.  TreeMap的排序功能

观察者模式(发布-订阅模式):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知全部观察者对象,让它们可以自动更新本身。

应用:

1.  Observable类和Observer接口

模板方法模式:定义一个算法的骨架,而将具体的算法延迟到子类中来实现

应用:

1.  AbstractClass抽象类里面的TemplateMethod()

相关文章
相关标签/搜索