设计模式之装饰模式
装饰模式:动态地给一个对象添加一些额外的职责。如果是增加功能,装饰模式比生成子类更灵活。
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(); } }
知识的学习,要真诚与谦虚才不会有眼无珠,人生苦短,不能浪费时间做无用功。
人生学习最悲哀的不过是,因为无知傲慢错过真正的好东西,又因为无知贪婪在假东西上耗费生命。