摘要:装饰者模式(Decorator Pattern )意图 : 动态的给一个对象添加一些额外的功能,IO这块内容体现出了装饰模式,Decorator模式相比生成子类更为灵活。角色 : 1)抽象构件角色(Component)--- 定义成一个接口类型2)具体构件角色 (ConcreteComponent) --- 该类(被装饰者)实现了 Component 接口,3)装饰角色 (Decorator) --- 该类实现了 Component 接口,并持有 Component接口的引用4)具体装饰角色 (ConcreteDecorator) --- 该类继承了装饰类UML实现:代码实现:Componen
阅读全文
摘要:定义:允许你将对象组合成树型结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理 个别对象 以及 对象组合。角色:1) 抽象构建角色 (Component)2) 叶子节点角色 (Leaf)3) 组合构建角色 (Composite)4) 客户端 (Client)Component.javapackage com.composite ;import java.util.List ;//抽象构件角色public interface Component{ public void add (Component component) ; public void remove ...
阅读全文
摘要:适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。有两种适配器模式:1)类适配器 (通过继承的方式)2)对象适配器 (采取对象组合的模式)-------------------------- 类适配器 -----------------------------Target.javapackage com.adapter ;public interface Target{ public void method() ;}被适配器类Adaptee.javapackage com.adapter ;public clas
阅读全文
摘要:要想实现 模板方法模式,涉及到两个角色:1.抽象模板角色---父类(抽象的) 2.具体模板角色---子类就是父类和子类继承的表现抽象模板角色这个类里 定义了几个抽象方法,供子类去实现具体操作,还定义了一个模板方法(template),以告诉子类去实现这些方法要有一定的顺序去执行, 这种设计模式在JUnit中的setUp(),runTest(),tearDown()体现了,源码:public void runBare() throws Throwable { setUp(); try { runTest(); //而这里面又涉及到 适配器模式 } finally { tearDown(); ..
阅读全文
摘要:动态代理(运行期行为)主要有一个 Proxy类 和一个 InvocationHandler接口动态代理角色:1. 抽象主题角色2. 真实主题角色(实现了抽象主题接口)3. 动态代理主题角色(实现了 InvocationHandler接口,并实现了 invoke()方法)Proxy 要调用 newProxyInstance方法代码演示:1.抽象主题角色 SubjectDemo.javapackage com.dynamicproxy ;public interface SubjectDemo{ public void request() ;}2. 真实主题角色 RealSubjectDemo.j
阅读全文
摘要:单例模式,确保某个类只能生成一个实例单例模式的构造方法必须定义为私有(private)的必须要定义一个静态(static)的方法,作为生成这个对象实例的入口package com.singleton;//静态代码块不一定在最开始执行,比如说 静态代码块 放在 单例模式中,//但一般情况下 静态代码块是第一执行的 也就是在类加载时执行, 只执行一次class SingletonTest{ private static SingletonTest singletonTest = new SingletonTest(); static { System.out.println("===..
阅读全文