|
|
|
/**假如我们现在有三个类A类 B类 C类其中 B类、C类都是A类的子类现在我们遇到一个问题,就是我要扩展B类和C类的功能,新增的三种功能分别用method1()、method2()、method3()来表示在我们遇到这个问题之前,B类和C类都各自有自己的子类,比如,那B类来讲,它的子类当中有的只新增了method1(), 有的新增了method1()和method2(), 有的三个新的功能都增加了因此B类的子类的数目应该是2^3 - 1 = 7个同样, C类也有7个子类这个一样凭空多出了好些个类, 此时我们可以用装饰器模式*//**A接口*/package com.michael.decorator;public interface A { public abstract void eat(); }/**B类*/package com.michael.decorator;import michael.decorator.Decorator1;public class B implements A { //现在要扩展B类的功能 public static void main(String[] args) { B b = new B(); b.eat(); Decorator1 d1 = new Decorator1(b); d1.method1(); } public void eat() { System.out.println("eat----------"); }}/**C类*/package com.michael.decorator;public class C implements A { public void eat() { System.out.println("C--eat()---------"); } public static void main(String args[]){ C c = new C(); c.eat(); Decorator2 d2 = new Decorator(c); d2.method2(); }}/**装饰器1*/package michael.decorator;import com.michael.decorator.A;public class Decorator1 implements A { //包含参数为A的构造方法 public Decorator1(A a){ } public void method1(){ System.out.println("Method1---------"); } public void eat() { // TODO Auto-generated method stub }}/**装饰器2*/package michael.decorator;import com.michael.decorator.A;public class Decorator2 implements A{ //包含参数为A的构造方法 public Decorator2(A a){ } public void method2(){ System.out.println("Method2---------"); } public void eat() { // TODO Auto-generated method stub }}/**装饰器3*/package michael.decorator;import com.michael.decorator.A;public class Decorator3 implements A { //包含参数为A的构造方法 public Decorator3(A a){ } public void method3(){ System.out.println("Method3---------"); } public void eat() { // TODO Auto-generated method stub }} |
|