装饰器模式

package decorator;

/**
 * @Author xxx
 * @Date 2021/6/17 14:20
 * @Email xxx
 * @Description: 装饰器模式
 * 4个角色
 *      基本的接口或者抽象类,提供方法
 *      具体的实现者
 *      装饰者
 *      具体的装饰者
 * 关系
 *      具体实现者实现基本接口,提供基本功能
 *      装饰者实现基本接口,并持有具体实现者的引用
 *      具体装饰者继承装饰者,并对重写装饰者的方法,实现具体功能的增强,实现构造方法
 */
interface Shape{
    void draw();
}
class RoundShape implements Shape{

    @Override
    public void draw() {
        System.out.println("画圆形");
    }
}
class SquareShape implements Shape{

    @Override
    public void draw() {
        System.out.println("画正方形");
    }
}
abstract class ShapeDecorator implements Shape{
    private Shape decoratorShape;
    public ShapeDecorator(Shape decoratorShape) {
        this.decoratorShape = decoratorShape;
    }

    public void draw() {
        decoratorShape.draw();
    }
}
class RedDecoratorShape extends ShapeDecorator{

    public RedDecoratorShape(Shape decoratorShape) {
        super(decoratorShape);
    }

    @Override
    public void draw() {
        setRedColor();
    }

    private void setRedColor() {
        super.draw();
        System.out.println("画红色的");
    }

}
public class DecoratorPatternDemo {
    public static void main(String[] args) {
        RoundShape roundShape = new RoundShape();
        SquareShape squareShape = new SquareShape();
        new RedDecoratorShape(roundShape).draw();
        new RedDecoratorShape(squareShape).draw();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值