设计模式应用场景

需要设计的类可以动态扩展和删除一些功能


实现方式

给职责定义一个接口类型,动态给一个类添加职责,这个职责可以在类构建的时候传入,也可以在类生成后传入

代码实现:

1.创建抽象类,定义装饰方法
abstract class DecoratorObject{
    //装饰方法
    abstract void decorator();
}
2.创建装饰器父类,定义编写装饰器构建需要的参数
abstract class TestDecorator extends DecoratorObject{
    DecoratorObject object;

    public TestDecorator(DecoratorObject object) {
        this.object = object;
    }

    @Override
    abstract void decorator();
}
3.创建A和B两个装饰器
class A extends TestDecorator {

    public A(DecoratorObject object) {
        super(object);
    }

    @Override
    void decorator() {
        object.decorator();
        System.out.println("A__decorator");
    }
}

class B extends TestDecorator {

    public B(DecoratorObject object) {
        super(object);
    }

    @Override
    void decorator() {
        object.decorator();
        System.out.println("B__decorator");
    }
}
4.创建C为被装饰的类,继承DecoratorObject
class C extends DecoratorObject {

    @Override
    void decorator() {
        System.out.println("C__decorator");
    }
}
5.main方法测试
    public static void main(String[] args) throws Exception{
        DecoratorObject c = new A(new B(new C()));
        c.decorator();
    }

测试结果
在这里插入图片描述

6.IO流装饰着模式
    public static void main(String[] args) throws Exception{
        File f = new File("D:/test.data");
        FileOutputStream fos = new FileOutputStream(f);
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        BufferedWriter bw = new BufferedWriter(osw);
        bw.write("IO流测试");
        bw.flush();
        bw.close();
    }

结果
在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐