分类目录归档:Design_Pattern

设计模式之代理模式(Proxy Pattern)_远程代理解析

代理模式通过插入第三方(代理对象)来分离调用者和被调用者(不同于执行者),而远程代理是最经典的代理之一,被调用者不在本地(处于另一个JVM中),无法直接调用它,此时就需要一个远程代理,调用者把调用请求发送给远程代理,代理对象和被调用者通信,再把调用结果传递给调用者

设计模式之状态模式(State Pattern)

状态模式是用来封装某种状态下的一整套行为的,状态模式隐藏了状态切换过程,调用者并不清楚模块内部的状态转换细节,状态模式实现了程序运行时的多态。如果代码中出现了大量相似的if-else结构,你可能需要使用状态模式来消除这些不和谐的条件块。

设计模式之组合模式(Composite Pattern)

组合模式,提供一种层级结构,使得我们能够忽略对象与对象集合间的差异,一视同仁地对待它们。更重要的是组合模式与迭代器模式组合起来可以轻松地完成一些神奇的事情(比如封装层级结构的遍历,以及在遍历基础上扩展的其它操作),牺牲类的单一责任原则,来换取透明性。

设计模式之迭代器模式(Iterator Pattern)

迭代器模式是一种比较简单的模式,说白了就是用迭代器来封装遍历细节。集合对象大都支持遍历操作(如Array,List,Set,Map等等),但由于各个集合对象内部实现方式不同,遍历时需要调用的接口也不同,迭代器就是为了给集合对象提供一个统一的接口以支持遍历操作

设计模式之单件模式(Singleton Pattern)

单件模式又被称为单例模式,定义很简单——只允许存在指定类的唯一实例(instance),并由该类提供全局访问点。但在实际应用的时候会遇到很多问题,比如在多线程,或多个classloader环境下,如何保证单件模式的正确性等等

设计模式之工厂模式(Factory Pattern)

之前一直以为定义一个XXXFactory类来负责new对象就是工厂模式了,而且一般为了方便使用,都把工厂类中的Create定义为static方法,仔细学习过后才发现工厂模式远没有这么简单,而且,严格地说,这种被称为“简单工厂模式”的方式根本不能称之为“模式”

设计模式之装饰者模式(Decorator Pattern)

装饰者模式是一种在框架中应用广泛的设计模式,在JavaAPI中文件流操作就应用了这样的模式,例如InputStream in = new BufferedInputStream(new FileInputStream(file));其中,BufferedInputStream被用来装饰FileInputStream,从而实现功能的扩展。装饰者模式满足“对修改关闭,对扩展开放”的OO设计原则,是一种很不错的设计模式。

设计模式之策略模式(Strategy Pattern)

设计模式是由代码结构优化经验萃取出来的理论知识,应用成熟的设计模式能够增强代码的可复用性、可扩展性与可维护性。其中,策略模式是最基础的设计模式之一,简单地说,策略模式就是把可以替换的算法步骤封装成一个个算法族,供运行时动态选择。