首页 > 其他 > 详细

设计模式之装饰模式

时间:2017-10-02 11:41:24      阅读:255      评论:0      收藏:0      [点我收藏+]

装饰模式:动态地给一个对象添加一些额外的职责。如果是增加功能,装饰模式比生成子类更灵活。

 

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();
    }
}

 

设计模式之装饰模式

原文:http://www.cnblogs.com/emoji1213/p/7619837.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!