• 无废话设计模式(7)结构型模式--装饰模式


    0-前言

      装饰模式定义:动态给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。

    1-实现

    1-1、易看的UML图:

    1-2、代码实现:

    //1、演员类(component,直接实现,未抽取父类,可抽取父类)
    class  Actor
    {
        public void  Act()
        {
            System.out.println("演员开始表演了");
        }
    }
    
    //2、Decorator(装饰抽象类)
    class  Stylist extends Actor
    {
        protected  Actor actor;
    
        public void  MakeActor(Actor _actor)
        {
            this.actor = _actor;
        }
    
        @Override
        public void Act()
        {
            if (actor !=null)
            {
                actor.Act();
            }
        }
    }
    
    //2-1、ConcreteComponentA(具体装饰者A--古装造型师)
    class AncientStylist extends Stylist
    {
        private String State;
    
        @Override
        public void Act()
        {
            System.out.println("古装造型师给演员化妆了");
            State  = "演员状态挺好的";
            System.out.println(State);
            super.Act();
        }
    }
    
    //2-2、ConcreteComponentB(具体装饰者B)
    class ModernStylist extends Stylist
    {
        public void AddBehaver()
        {
            System.out.println("给演员打了个气");
        }
    
        @Override
        public void Act()
        {
            System.out.println("现代造型师给演员化妆了");
            AddBehaver();
            super.Act();
        }

    客户端:

            Actor actor = new Actor();
            AncientStylist ancientStylist =new AncientStylist();
            ModernStylist modernStylist = new ModernStylist();
    
            ancientStylist.MakeActor(actor);
            ancientStylist.Act();
    
            modernStylist.MakeActor(actor);
            modernStylist.Act();

    运行结果:

    2、应用场景简单总结

    1、当需要以不影响其他对象为前提实现动态、透明地给单个对象添加职责时;

    2、当需要将对象的某些职责进行撤销操作时;

    3、当不能用生成子类的方法进行当前系统的扩充时;

  • 相关阅读:
    自学Zabbix8.1 Regular expressions 正则表达式
    自学Zabbix7.1 IT services
    自学Zabbix6.1 Event acknowledgment 事件确认
    自学Zabbix5.1 zabbix maintenance维护周期
    自学Zabbix4.3 zabbix实战监控Web网站性能
    自学Zabbix4.2.1 Application介绍
    自学Zabbix4.2 web监控项创建+item详解
    自学Zabbix4.1 zabbix监控web服务器访问性能
    自学Zabbix3.11-宏Macros
    自学Zabbix3.10.2-事件通知Notifications upon events-Actions报警配置
  • 原文地址:https://www.cnblogs.com/yanghj/p/13411310.html
Copyright © 2020-2023  润新知