六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 42|回复: 0

编程模式--装饰器模式小解

[复制链接]

升级  40%

4

主题

4

主题

4

主题

童生

Rank: 1

积分
20
 楼主| 发表于 2013-1-26 14:13:31 | 显示全部楼层 |阅读模式
/**假如我们现在有三个类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                        }}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表