摘要:创建模式 创建模式是对类的实例化过程的抽象化。有时候,在创建对象时,需要动态的决定怎么创建对象,创建哪些对象,以及如何组合和表示这些对象关系。创建模式分为类的创建模式和对象的创建模式两种:类的创建模式 类的创建模式使用继承关系,把类的创建延迟道子类,从而封装了客户端将得到哪些具体类的信息,并且隐藏了这些类的实例是如何被创建和放在一起的。对象的创建模式 对象的创建模式把对象的创建过程动态的委派给另一个对象,从而动态的决定客户端将得到哪些具体类的实例,以及这些类的实例是如何被创建和组合在一起的。创建模式种类(1)简单工厂模式(2)工厂方法模式(3)抽象工厂模式(4)建造者模式(5)单例模式(...
阅读全文
摘要:结构模式描述的是如何将类或者对象结合起来形成更大的结构,结构模式可以分为类的结构模式和对象的结构模式。类的结构模式 类的结构模式是使用继承来把类、接口等组合在一起,以形成更大的结构。当一个类从父类继承并实现某个接口时,这个新的类就把父类的结构和接口的结构结合起来了。类的结构模式时静态的。使用类的结构模式的有:(1)类的适配模式对象的结构模式 对象的结构模式描述怎么把各种不同类型的对象组合在一起,以实现新的功能方法。对象的结构模式是动态的。使用对象的结构模式的有:(1)对象的设计模式
阅读全文
摘要:模式定义模板方法模式(Template Method Pattern),定义一个操作中的算法骨架,而将一些实现步骤延迟到子类当中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法模式是代码复用的一项基本的技术,在类库中尤其重要,它遵循“抽象类应当拥有尽可能多的行为,应当拥有尽可能少的数据”的重构原则。在JUNIT中我们写的测试类就是通过模版方法来调用的,先执行setUp(),然后是:测试方法,最后执行tearDawn();模式使用模版方法模式编程:1.设计抽象类,在抽象类中定义要执行的方法2.在模版方法中,加入抽象定义方法的执行步骤3.在实现类中具体实现UML类
阅读全文
摘要:模式定义:原型模式:通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例,被复制的实例就是我们所称的“原型”。UML类图:类图代码:浅拷贝:public class Thing implements Cloneable{ //定义一个私有变量 private ArrayList<String> arrayList = new ArrayList<String>(); @Override public Thing clone(){ Thing thing=null; try { thing = (Thing)sup...
阅读全文
摘要:单例模式定义:单例模式(也叫单件模式)是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)。UML类图:类图代码:主动式(不管有没有调用,都先实例化出来):public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() {} public static Singleton getInstance(){ return singleton; }}被动式(第一...
阅读全文
摘要:建造者模式是什么?建造者模式是将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。这里不禁会有疑问,将复杂对象的构建与其表示相分离,我们前面不是使用工厂方法模式可以实现了吗?可见,构造者模式不是为解决这个问题而生的。那它到底要解决什么问题呢?它是通过相同的构建过程创建不同的表示。也就是说,对象是创建出来的,但是返回的对象的属性是不同的。UML类图:类图代码:Productpublic interface Product { public void addPart(String part) ; public void showProduct();}Concret...
阅读全文
摘要:抽象工厂模式是什么?抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。UML类图:类图代码:ProductApublic interface ProductA { public void operation1(); public void operation2();}ProductBpublic interface ProductB { public void operation1(); public void operation2();}ConcreateProductA1public cl...
阅读全文
摘要:工厂方法模式是什么? 工厂方法模式是针对每一种产品提供一个工厂类,通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加任意产品。UML类图如下:注意:Factory不一定要用接口,也可以采用抽象类,反正能符合里氏替换原则就可以了,不要太注重形式。要注意的是怎么解决问题。类图代码:Productpublic interface Product { public void operation1(); public void operation2();}ConcreateProductApublic class ConcreateProductA implements ...
阅读全文
摘要:什么是简单工厂模式?从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。UML类图如下:代码:Productpublic interface Product { public void operation1(); public void operation2();}ConcreateProductApublic class ConcreateProductA imple...
阅读全文
摘要:面向对象的设计艺术(设计模式)1. 开篇导读2. 面向对象的设计原则3. 设计模式之创建模式3.1 简单工厂模式3.2 工厂方法模式3.3 抽象工厂模式3.4 建造者模式3.5 单例模式3.6 原型模式4. 设计模式之结构模式4.1 适配器模式4.2 桥梁模式4.3 组合模式4.4 装饰模式4.5 门面模式4.6 享元模式4.7 代理模式5. 设计模式之行为模式5.1 责任链模式5.2 命令模式5.3 策略模式5.4 观察模式5.5 解释器模式5.6 迭代模式5.7 中介模式5.8 备忘录模式5.9 状态模式5.10 模板方法模式5.11 访问者模式6. 设计模式之比较6.1 装饰模式 VS
阅读全文
摘要:1. "开-闭"原则(Open-ClosedPrinciple,OCP)解释:一个软件实体应该对扩展开放,对修改关闭。就是说,在设计一个模块的时候,应当使这个模块可以在不被修改的情况下被扩展。开-闭原则是面向对象设计可复用的第一块基石。2. 里氏代换原则(Liskov Substitution Principle,LSP)解释:一个软件实体如果使用的是一个基类的话,那么一定适用于其子类。3. 依赖倒转原则(Dependenceinversion principle, DIP)解释:依赖于抽象,不要依赖于实现。要针对接口编程,不要针对实现编程。4. 合成/聚合复用原则(Com
阅读全文
摘要:1. 从功能效果上看装饰模式:在不改变接口的前提下,动态扩展对象的功能代理模式:在不改变接口的前提下,控制对象的访问装饰模式强调功能扩展,比如A对象的B方法,运用装饰模式后,在调用B方法前后,实现新的功能,此时B方法效果与原来不同代理模式强调控制访问,如上例,运用代理模式后,在调用B方法前后,控制怎么访问B方法的原始数据,而对于B实现的功能效果不做修改因此,如果运用设计模式后,方法的功能效果(主要是输出效果)不变,一般可视为代理。2. 从类结构上看装饰模式结构图如下:代理模式结构图如下:3. 从语言层面看代理模式:代理和真实对象之间的的关系通常在编译时就已经确定了装饰模式:装饰者能够在运行时递
阅读全文
摘要:1.设计模式是什么?设计模式(Design pattern)是一套代码设计经验的总结,是解决某种应用场景问题的一个通用解决方案。2.为什么要用设计模式?使用设计模式的目的有如下几种:(1)可重用代码(2)让代码更容易被他人理解(3)保证代码可靠性(4) 易于做扩展3.设计模式都有哪些?Java设计模式分为创建模式, 结构模式, 行为模式 3种类型:创建模式(1)Factory( 工厂方法)(2)Factory( 抽象工厂)(3)Builder(建造者模式)(4)Singleton(单例模式)(5)Prototype(原型模式)结构模式(1)Adapter(适配器模式)(2)Bridge(桥梁模
阅读全文