文档详情

java中vistor和模板方法设计模式的区别.docx

发布:2018-11-19约6.17千字共13页下载文档
文本预览下载声明
java中vistor和模板方法设计模式的区别   篇一:java常见的设计模式   java设计模式   单例模式代理模式   单例设计模式(singleton) 所谓类的单例设计模式,就是采用一定的方法保证整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。   如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的 构造方法的访问权限设置为private ,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍然可以产生该类的对象。因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以 指向类内部产生的该类对象的变量也必须定义成静态的。   1 将类的构造器 私有化。   2 声明私有的 静态的 本类类型的引用变量s;   3 提供公共的静态的方法, 返回本类类型的对象引用s。   //懒汉式 单例模式 【实例对象放在方法中实现,第一次调用该方法的时候实例化对象,若存在对象,则不再实例化该对象。】   饿汉模式【在第二步骤的时候,实例化本类对象,第三步直接返回s private static Singleton s;   public static Singleton getInstance () { } private Singleton(){ } if(s == null) { } return s; s = new Singleton();   模板方法设计模式 Template Method   抽象类就是体现的一种模板方法的设计模式,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行拓展,改造。但子类总体上会保留 抽象类 的行为方式。   解决的问题   1 当功能内部一部分实现是确定的,一部分是不确定的,那么可以把不确定的部分暴露出去,让其子类来实现。   2 编写一个抽象父类,父类提供多个子类的通用方法,并把一个或多个方法留给其子类来实现,这就是一种模板模式。   工厂方法 Factory Method   概述   设计模式之工厂模式(Design Pattern) factory pattern   设计模式是一套被反复使用,多数人知晓的,经过分类编目,代码设计经验的总结。   工厂模式的概念:   实例化对象用工厂方法代替new操作;   工厂模式包括工厂方法模式和抽象工厂模式;   抽象工厂模式是工厂方法模式的拓展;   工厂模式的意图:   定义一个接口来创建对象,但是让子类来决定那些类需要被实例化; 工厂方法把实例化的工作推迟到子类中去实现。   什么情况下适合工厂模式??   有一组类似的对象需要创建。   在编码的时候不能预见需要创建哪种类的实例。   系统需要考虑拓展性,不应依赖于产品类实例 如何被创建,组合和表达的细节。   在项目中,软件系统经常面临着对象的创建工作,由于需求的变化,这个对象可能随之也会发生变化,但它却拥有比较稳定的接口。   为此,我们需要提供一种封装机制,来隔离这种易变对象的变化,从而保持系统中其他依赖该对象的对象不随着需求变化而变化。   工厂模式的设计   1尽量松耦合,一个对象的依赖对象的变化与本身无关   2 具体产品与客户端剥离。   适用性:   1. 当一个类不知道它所必须创建的对象的类的时候   2. 当一个类希望由它的子类来指定它所创建的对象的时候   3. 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候   代理模式   概述:   为其他对象提供一种代理以控制对这个对象的访问。   篇二:设计模式之模板方法模式   设计模式之模板方法模式   Template Method   定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以重新定义算法的特定步骤,但不能改变算法的结构。   使用场合:   1) 一次性实现一个算法的不变部分,并且将可变的行为留给子类来完成   2) 各子类公共的行为应该被提取出来并集中到一个公共父类中以避免代码的   重复。首先识别现有代码的不同之处,并且把不同的部分分离为新的操作,最后,用一个调用这些新的操作的模板方法来替换这些不同的代码   3) 控制子类的扩展   代码结构:(主要用抽象类)   1) AbstractClass 实现一个模板方法,定义一个算法的骨架   2) ConcreteClas
显示全部
相似文档