设计模式:
* singleton(单例模式):在JVM中一个类只允许有一个对象实例,所有调用该对象的都共享这一个对象,它体现了一个类的单一性。
o 实现单例的要求:
+ 私有的构造方法。防止在其它类中直接用new关键字生成该类的实例对象。
+ 一个同步、静态的返回值是本类的实例的方法。其它类中必须通过这个方法得到这个类的实例,且在这个类中有一个本类的私有的对象,当这个对象值为null时,new一个本类的实例对象返回,如果不是为null,那就将本类中的本类的实例对象返回。这样就防止了产生多个该类的实例对象。
* factory(简单工厂模式):工厂模式取代了new关键字,降低了各层次间的偶合度,它专门负责将大量有共同接口的类实例化,而且事先不需要知道每次要实例化哪一个类,它定义一个用于创建对象的接口,由子类决定实现哪一个类。
o 它相当于一个生产工厂,专门生产出具有共同接口的类的实例,所有需要这一种类型的实例的对象都从这个工厂中获得实例对象,而不需要直接通过new关键字去产生实例对象。它起到了对一种类型的实例有效的统一管理。
* abstractFactory(抽象工厂模式):工厂模式中的工厂模式,它提供一系列相关或相互依赖对象的接口,而无需指定它们具体的类,抽象工厂模式是一种比简单工厂模式更抽象的模式,但是,它们类的原理是相同的,只不过简单工厂模式返回的是普通类的对象实例,而抽象工厂模式工厂类返回的是一个工厂类的实例对象,再通过个工厂类的实例对象获得其它具体类的实例对象。
o 抽象工厂模式在工厂类这一层又进行了具体化,它提出一个工厂类的共同的抽象类或接口做为最父类,由子工厂类实现对不同的对象生成不同的工厂类。
* facade(外观或门面模式):将业务逻辑抽取成一个接口(这个接口可以看做是一个方法或类),调用方法不需要知道它的具体实现。为子系统提供了一个更高层次、更简单的接口,降低了子系统的复杂度和依赖度及偶合度,使得子系统更易于使用和管理。
o 门面模式就是将门面类中的行为单独的抽取出做为一个对象,这个对象只是为了门面类中的这一个方法而做。也可以反过来说。在客户端调用其对象时必须是通过这个门面类当中的某个方法,这个方法再去调用这个单独的对象。
* template(模板模式):类的行为模式。基于继承之上,在父类中定义操作中算法的骨架(或称为顶级逻辑),将一些步骤(或称为基本方法),可能存在不同变化的执行延迟到其子类中。
o 简单来说模板模式就是将各子类中将共性抽取到父类中,并定义一个执行的流程框架,将主要的逻辑骨架封装在父类,对于各子类可能有不同体现状态的,在父类中抽取为单独的方法供子类去实现,从而体现出父类的共性,子类的特殊性。
o 模板模式具有灵活的扩展性、代码复用性、减少重复代码等优点。
* strategy(策略模式):对算法的包装‘把使用算法的责任和算法本身分隔开,基于多态之上,父类定义行为,子类具体实现算法,并且各子类可以相互替换。
o 在一定的范围内你想以不同的形式表现,就比如你从数据库中查询得到的结果集,你可以将它封装成返回给客户端的是一个List,也可以是一个 Map,也可以是一个Bean对象,但是,你返回的最终东西还都只是查询出的数据。客户端可以根据不同的需要获取不同的返回类型。这就体现出了一个策略的方式。
* composite(组合模式):将对象以树形结构组织起来,以达成"部分-整体"的层次结构,使得客户端对单个对象和组合对象的使用具有一致性,它能达到"牵一动百"的效果。
o 它也是基于继承之上的,所有树形结构上的节点都是同一类型,但是,树上又分为支点与叶节点,支点可以装载其它的节点,而叶节点不能装载其它节点,叶节点处理自己的逻辑。因为所有的节点都同属于一种类型,这就体现出了它们是一个整体。这一种类型中又分为叶与支点,这就体现出了部分的特性。只要运行了最根节点,整个树形结构的所有节点都会被遍历完,每个支节点都会遍历自己所包含的子节点,这样又体现出了“牵一动百”的功效。
* Observer(观察者模式):它定义于一种一对多的依赖关系,当一个被依赖的对象发生变化,它会通知所有依赖于它的对象并“自动更新”,这就是当被观察者发生变化时,所有的观察者都会发生变化。
o 在被观察者中有一个装载观察者的容器,当被观察者发生变化时,它会通知这个容器中所有的观察者进行改变。这就达到了关联的作用。
* command(命令模式):将来自客户端的请求传入一个对象,无需了解这个请求激活的动作或有关接受这个请求的处理细节。其实就是将一个对象中的每个特定功能的方法扩散,用一个专门的command类来单独调用,客户端通过command执行相对应的操作。
分享到:
相关推荐
从追MM谈Java的23种设计模式 简单好理解 容易记住 设计模式做为程序员的“内功心法
该文章从追MM的角度浅谈了Java的23种设计模式,形象生动易于理解。
浅谈java中的几种随机数,浅谈java中的几种随机数,浅谈java中的几种随机数,浅谈java中的几种随机数
浅谈Java中Mysql数据库的连接与操作.pdf
浅谈Java优势,关于java优势......
浅谈Java中的几种随机数
浅谈Java中单例设计模式之构造方法私有化.pdf
深入浅出Java 23种设计模式
浅谈Java软件测试.pdf
深入浅出java设计模式(高清中文PDF)
Java版本设计模式,深入浅出系列 Java版本设计模式,深入浅出系列 Java版本设计模式,深入浅出系列
JAVA设计模式教程,程序员必备,从浅入深JAVA设计模式教程,程序员必备,从浅入深JAVA设计模式教程,程序员必备,从浅入深JAVA设计模式教程,程序员必备,从浅入深JAVA设计模式教程,程序员必备,从浅入深JAVA设计...
浅谈Java面向对象程序设计.pdf
深入浅出设计模式C#Java版,经典书籍,希望对大家有帮助。
并整理二十三种设计模式的理论部分,综合汇总成这份Java设计模式(疯狂J*va联盟版),希望对大家有所帮助。 本份帮助文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模*的组成部分,并附带...
深入浅出设计模式.pdf,电子版,下载,深入浅出设计模式.pdf,电子版,下载
深入浅出设计模式附书源码Java版源代码
本文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模式的组成部分,并附带有简单的例 子和类目,目的是为了让读者了解二十三种设计模式,并能方便的查阅各种设计模式的用法及注意点;...
并整理二十三种设计模式的理论部分,综合汇总成这份Java设计模式(疯狂J*va联盟版),希望对大家有所帮助。 本份帮助文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模*的组成部分,并附带...