设计模式之装饰者模式

来源:互联网 发布:交流软件英文怎么说 编辑:程序博客网 时间:2024/06/08 03:26

英文叫Decorator Pattern,又叫装饰者模式。
装饰者模式是指在不继承,不改变原类的功能的情况下,动态地扩展一个对象的功能。它通过创建一个装饰对象,用来包裹被装饰的对象。
特点:
(1)装饰对象和被装饰对象实现相同的接口或有共同的超类。
(2) 被装饰对象对装饰对象有一个引用(reference)
(3) 装饰对象接受所有来自客户端的请求,它把这些请求转发给被装饰的对象。
(4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。

例子:
1、接口

//同一个接口public interface MyInterface {    public void paint();}

2、被装饰类

public class FatherClass implements MyInterface {    //被装饰者    private MyInterface myInterface;    public FatherClass(MyInterface myInterface){        this.myInterface = myInterface;    }    @Override    public void paint() {        //装饰者做的职责(可以在此处,将会在被装饰者独有的功能之前被调用)        myInterface.paint();        //被装饰者做的职责        System.out.println("给画上好了颜色");        //装饰者做的职责(也可以在此处,将会在被装饰者独有的功能之后被调用)        myInterface.paint();    }}

3、装饰者

public class SonClass implements MyInterface {    @Override    public void paint() {        System.out.println("用铅笔画好了一幅画");    }}

4、测试

public class Main {    public static void main(String[] ss){        SonClass s = new SonClass();        //s.paint();        FatherClass m = new FatherClass(s);        m.paint();    }}

5、结果

用铅笔画好了一幅画给画上好了颜色
0 0
原创粉丝点击