Decorator装饰者设计模式

装饰者Decorator主要是针对继承树较为庞大的类所引起的代码重复问题,所提出的一种设计模式。例如:电子产品的子类有手机、电脑、平板电脑、路由器。。。。而每一个公司的子类也有手机、电脑、平板电脑、路由器。。。。如果按照继承关系就会形成庞大的继承子类。装饰者设计模式就是针对这个问题给出了解决方案。

interface Product{
    public void productName();
}
//Phone和Desktop为被装饰者
class Phone implements Product{
    public void productName(){
        System.out.println("Phone -->make a phonecall");
    }
}

class Desktop implements Product{
    public void productName(){
        System.out.println("Desktop -->document processing");
    }
}
//HuaWei和Lenovo为装饰者
class HuaWei implements Product{
    private Product product;
    public HuaWei(Product product){
        this.product = product;
    }
    public void productName(){
        System.out.println("***HuaWei***");
        product.productName();
    }
}

class Lenovo implements Product{
    private Product product;
    public Lenovo(Product product){
        this.product = product;
    }
    public void productName(){
        System.out.println("***Lenovo***");
        product.productName();
    }
}

public class TestDemo{
    public static void main(String args[]){
        Phone phone = new Phone();
        HuaWei huawei = new HuaWei(phone);
        huawei.productName();
        Lenovo lenovo = new Lenovo(phone);
        lenovo.productName();
    }
}
/*Output

***HuaWei***
Phone -->make a phonecall
***Lenovo***
Phone -->make a phonecall

*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值