设计模式--装饰者模式

装饰者模式

装饰者模式又名包装(Wrapper)模式。装饰者模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。

装饰者模式动态地将责任附加到对象身上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

(1)抽象组件:定义一个抽象接口,来规范准备附加功能的类

(2)具体组件:将要被附加功能的类,实现抽象构件角色接口

(3)抽象装饰者:持有对具体构件角色的引用并定义与抽象构件角色一致的接口

(4)具体装饰:实现抽象装饰者角色,负责对具体构件添加额外功能。

//机器人都会工作
public interface Robot{
    public void work();
}

//机器人clear会工作
public class ClearRobot implements Robot{
    @override
    public void work(){
        //代码
        system.out.printfln("robot work");
    }
}

//机器人技能
public class Skill implements Robot{
    private Robot rob;
    public Skill(Robot rob){
        this.rob = rob;
    }
    @override
    public void work(){
        //代码
        rob.work();
    }
}

//机器人会说话
public class Talk extends Skill{
    public Talk(Robot rob){
        super(rob);
    }
    @override
    public void work(){
        //代码
        system.out.printfln("Robot talk");        
    }
}


//机器人会唱歌
public class Sing extends Skill(){
    public Sing (Robot rob){
        super(rob);
    }
    @override
    public void work(){
    //代码
    system.out.printfln("Robot Sing")
    }
}


//客户端调用
public class ClearBoy{
    public static void main(String[] args){
        Robot rob = new ClearRobot();
        //1.单层装饰
        Robot talk = new Talk(rob);
        //可传递
        Robot sing = new Sing(talk);
        
        //2.双层装饰
        Robot sing2 = new Sing(new talk(rob));
        
        sing.work();
        sing2.work();
    }
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值