Java中的设计模式

来源:互联网 发布:网络红歌2015流行歌曲 编辑:程序博客网 时间:2024/05/16 11:21

Java中的设计模式 - 装饰模式

1 - 可以扩展一个类

2 - 可以动态的为一个对象增加功能,并且是可逆的(可以撤销)

3 - 缺点是会产生很多相似的对象

#

/** * Created by 谭健 2017年7月5日 21:18:31 * 打电话接口,具备打电话的功能 */public interface Tel {    void run();}

#

/** * Iphone 是手机,实现打电话接口 */public class Iphone implements Tel{    @Override    public void run() {    System.out.println("Hello, I am Ming!");    }}

#

/** * 装饰器:铃声 * 手机打电话没有接通之前要加个铃声装饰一下 * 这个是装饰打电话的,所以装饰器实现打电话接口 */public class Bell implements Tel{    private Iphone iphone;    // 装饰在手机上,需要持有手机实例    public Bell(Iphone iphone) {    super();    this.iphone = iphone;    }    @Override    public void run() {    // 打电话之前先响铃    System.out.println("di di di! ");    iphone.run();    }}

#

/** * 调用者打电话 */public class Call {    public static void main(String[] args) {    // 没有装饰的手机打电话    System.out.println("没有装饰的手机打电话:");    Tel tel = new Iphone();    tel.run();    // 有装饰的手机打电话    System.out.println("有装饰的手机打电话:");    Tel telBell = new Bell(new Iphone());    telBell.run();    }}

输出结果

没有装饰的手机打电话:Hello, I am Ming!有装饰的手机打电话:di di di! Hello, I am Ming!
原创粉丝点击