标签:style icp 打电话 void xtend call int rgs main
装饰模式:动态地给一个对象添加一些额外的职责。如果是增加功能,装饰模式比生成子类更灵活。
1.普通的手机
public interface Phone { public void call(); } public class MyPhone implements Phone{ @Override public void call() { System.out.println("打电话!"); } }
2.装饰者
public abstract class PhoneDecorator implements Phone { private Phone phone; public PhoneDecorator(Phone phone) { this.phone = phone; } @Override public void call() { this.phone.call(); } }
3.具体想装饰的功能
public class MessagePhoneDecorator extends PhoneDecorator{ public MessagePhoneDecorator(Phone phone) { super(phone); } @Override public void call() { super.call(); System.out.println("可以发短信了。"); } }
public class MusicPhoneDecorator extends PhoneDecorator { public MusicPhoneDecorator(Phone phone) { super(phone); } @Override public void call() { super.call(); System.out.println("可以听音乐了。"); } }
测试:
public class DecoratorDemo { public static void main(String[] args) { Phone phone=new MyPhone(); PhoneDecorator messagePhoneDecorator=new MessagePhoneDecorator(phone); messagePhoneDecorator.call(); PhoneDecorator musicPhoneDecorator=new MusicPhoneDecorator(phone); musicPhoneDecorator.call(); } }
标签:style icp 打电话 void xtend call int rgs main
原文地址:http://www.cnblogs.com/emoji1213/p/7619837.html