Java 设计模式
设计模式是对应于不同的应用目的的。
适配:将特定功能接口适配需求方
桥接:面向两个接口,无关接口的实现; 抽象化与实现化解耦,使得二者可以独立变化;例:笔与图形,笔可以画图形,笔可以有铅笔,圆珠笔等,图形可以有圆形,方形等;Eclipse 平台上的桥接模式
工厂:定义一个用于创建对象的接口,让子类决定实例化哪个类,是一个类的实例化延迟到其子类。
抽象工厂:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。为了让相互依赖的接口共同协作;类比桥接;汽车厂包含生产轿车品类,生产卡车品类,生产跑车品类不同生产线;开发不同平台的软件等
外观:为一组接口定义个一个更高层的统一接口,隐藏系统复杂性
状态:目的---消除庞大的条件分支语句;原理---将特定状态相关的行为都放入一个对象中,通过定义不同的子类可以自由的增加新的状态和转换;应用---对象的行为取决于状态,在运行时刻根据状态改变行为。
装饰:动态的添加功能
中介:用一个中介对象封装一系列的对象交互。避免显示的相互引用,耦合松散。
备忘录:不破坏封装的前提下在外部保存对象的状态
代理:为其它对象提供一个代理,以控制对着个对象的访问
原型:由一个对象创建另一个可定制对象,且不需要知道中间的任何细节。
建造者: 使用多个简单的对象一步一步构建成一个复杂的对象;各种builder,SessionFactoryBuilder http等
命令:将请求封装为对象。 将命令的执行和责任分开
职责链:struts action链, filter chain
解释器:jvm
访问者:商品购物车
策略模式:将易于变化的部分封装为接口,通常Strategy 封装一些运算法则,使之能互换;如实现排序的多种策略方法。
组合模式(整体部分):以树的形式组合对象。xml解析。 组合模式使得用户对单个对象和组合对象的使用具有一致性。 客户程序与复杂元素的内部结构解耦
观察者: 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。订阅新闻。
享元: 享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。 主要用于减少创建对象的数量,以减少内存占用和提高性能;共享池,数据库连接池;string
项目实例:https://github.com/windwant/windwant-demo/tree/master/java-design-pattern