设计模式——结构型

1.装饰器模式

要素:装饰器,装饰对象

为待装饰对象中某一结构特征添加内容,而不是新建一个特征

java 复制代码
/**
 * 装饰对象
 */
public interface Shape {
    public void draw();
}
/**
 * 具体装饰对象
 */
public class Circle implements Shape{
    private String TAG = "Circle";
    @Override
    public void draw() {
        Log.d(TAG,"draw circle");
    }
}

/**
 * 装饰器
 */
public abstract class ShapeDecorator implements Shape{
    protected Shape shape;
    private String TAG = "ShapeDecorator";

    public ShapeDecorator(Shape shape) {
        this.shape = shape;
    }
}
/**
 * 具体装饰器,当只有一个待装饰对象时可不需要抽象装饰器
 */
public class ColorDecorator extends ShapeDecorator {
    private String TAG = "ColorDecorator";
    public ColorDecorator(Shape shape) {
        super(shape);
    }

    //原结构方法
    public void draw() {
        shape.draw();
        setColor();
    }

    //给原结构添加的装饰
    private void setColor() {
        Log.d(TAG,"set color");
    }
}

//测试
Circle circle = new Circle();
ColorDecorator colorCircle = new ColorDecorator(circle);
colorDecorator.draw();

输出log:

相关推荐
是糖糖啊1 小时前
Agent 不好用?先别怪模型,试试 Harness Engineering
人工智能·设计模式
jiankeljx1 小时前
Spring Boot 经典九设计模式全览
java·spring boot·设计模式
WarrenMondeville1 小时前
5.Unity面向对象-依赖倒置原则
unity·设计模式·依赖倒置原则
加个鸡腿儿18 小时前
从"包裹器"到"确认按钮"——一个组件的三次重构
前端·vue.js·设计模式
ALex_zry18 小时前
现代C++设计模式实战:从AIDC项目看工业级代码架构
c++·设计模式·架构
君主黑暗20 小时前
设计模式-工厂模式
设计模式
han_21 小时前
JavaScript设计模式(四):发布-订阅模式实现与应用
前端·javascript·设计模式
bmseven1 天前
23种设计模式 - 工厂方法(Factory Method)
设计模式·工厂方法模式
pqq的迷弟1 天前
设计模式的原则
设计模式
君主黑暗1 天前
设计模式-抽象工厂模式
设计模式·抽象工厂模式