• 设计模式--装饰者模式


    装饰模式

    装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象

    组成:

    • Component:给出一个抽象接口,以规范准备接收附加责任的对象。
    • Concrete Component:定义一个将要接收附加责任的类,需要被装饰的类。
    • Decorator:持有一个构件(Component)对象的实例,并实现一个与抽象构件接口一致的接口。
    • Concrete Decorator:负责给构件对象添加上附加的责任,具体的装饰类。

    优点:

    • 通过使用不同的装饰类以及装饰类组合以及装饰类的排列组合,可以创造出不同的行为组合。
    • 扩展新的行为较为容易,可扩展性强。 

    缺点:

      装饰模式会导致设计中出现许多小类,如果过度使用,会使程序变得很复杂。

    简化版:

    • 如果只有一个Concrete Component类而没有抽象的Component接口时,可以让Decorator继承Concrete Component。
    • 如果只有一个Concrete Decorator类时,可以将Decorator和Concrete Decorator合并。

    类图:

    代码实现:

    public interface Componet {
        public void operation();
    }
    public class DecreteComponet implements Componet {
        @Override
        public void operation() {
            System.out.println("Duck");
        }
    }
    public class Decorator implements Componet {
        Componet componet;
    
        public Decorator(Componet componet) {
            this.componet = componet;
        }
    
        @Override
        public void operation() {
            componet.operation();
        }
    }
    public class DecreteDecoratorA extends Decorator {
    
        public DecreteDecoratorA(Componet componet) {
            super(componet);
        }
    
        @Override
        public void operation() {
            //addbehaviorA(); 也可以放前面
            super.operation();
            addbehaviorA();
        }
    
        public void addbehaviorA(){
            System.out.println("can fly!");
        }
    }
    public class Client {
        public static void main(String[] args) {
            Componet componet = new DecreteComponet();
            Decorator decorator = new DecreteDecoratorA(componet);
            decorator.operation();
        }
    }

  • 相关阅读:
    震旦199打印机扫描A4文件
    震旦199打印机使用“多组多张文件”复印功能
    局域网电脑快速添加共享的打印机
    打印机连续打印,速度变慢,打印队列一直自动闪烁
    用IntelliJ IDEA编译,编译之后提示 无效的标记: -release
    hao360恶意篡改IE首页——修复方法
    联想一体机怎么设置u盘启动|联想一体机bios改U盘启动方法(转)
    解决局域网IP冲突
    Cisco Packet Tracer 交换机 2950-24 配置
    静态路由作用和添加删除命令
  • 原文地址:https://www.cnblogs.com/foreverYoungCoder/p/7804153.html
Copyright © 2020-2023  润新知