您的位置:首页 > 编程语言 > Java开发

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

2017-07-05 21:34 344 查看

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() {
// 打
4000
电话之前先响铃
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!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: