应聘时漂亮的回答
2011-03-01 12:43
260 查看
装饰模式 就是给一个类添加其他的功能。这个模式跟代理模式相当的相识。
看代码
1、基础接口
2、要装饰的类
3、装饰类
4、第1个装饰的功能
5、第2个装饰的功能
6、main类
这个模式跟代理模式的不同一个在于结构的设计,一个在于行为的实现。这是本质的差异以后会具体说代理模式。
看代码
1、基础接口
public interface Phone { public void call(); }
2、要装饰的类
@Override public void call() { System.out.println("It's only call"); }
3、装饰类
public abstract class MobileTelephone { private final Phone phone; public MobileTelephone(Phone phone) { this.phone = phone; } protected void call() { phone.call(); } }
4、第1个装饰的功能
public class MoveFunction extends MobileTelephone { public MoveFunction(Phone phone) { super(phone); } @Override protected void call() { super.call(); System.out.println("It can move"); } }
5、第2个装饰的功能
public class SMSFunction extends MobileTelephone { public SMSFunction(Phone phone) { super(phone); } @Override protected void call() { super.call(); System.out.println("It can sms"); } }
6、main类
public class Main { public static void main(String[] args) { Phone phone = new FixedTelephone(); phone.call(); MobileTelephone mobileTelephone = new SMSFunction(phone); mobileTelephone.call(); MobileTelephone moveFunction = new MoveFunction(phone); moveFunction.call(); } }
这个模式跟代理模式的不同一个在于结构的设计,一个在于行为的实现。这是本质的差异以后会具体说代理模式。