您的位置:首页 > 其它

应聘时漂亮的回答

2011-03-01 12:43 260 查看
装饰模式 就是给一个类添加其他的功能。这个模式跟代理模式相当的相识。
看代码
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();
}
}

这个模式跟代理模式的不同一个在于结构的设计,一个在于行为的实现。这是本质的差异以后会具体说代理模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: