zoukankan      html  css  js  c++  java
  • 装饰模式

    装饰模式的优点和缺点:

     (1)装饰模式与继承关系的目的都是要扩展对象的功能,但是装饰模式可以提供更多的灵活性。

       (2)通过使用不同的具体装饰类以及这些装饰类的排列组合,设计师可以创造出很多不同行为的组合。

       (3)灵活性是把双刃剑,使用时比继承更容易出错。

     

    众所周知很多时候买车都是要加装潢的,也就是所谓的QJ,增加车的功能就非常适用装饰模式,因为装饰模式本身的一大优点就是扩展原有功能。以下环境为JDK1.8,否则static 和 abstract无法同时修饰一个类。

    public class DecoratorDemo {
      interface Car {
        void operation();
      }
    
      static class Accord implements Car {
    
        @Override
        public void operation() {
          System.out.println("自动启停");
          System.out.println("座椅通风");
          System.out.println("座椅位置调节");
        }
      }
    
      static abstract class AbstractDecoratorAccord implements Car {
        protected Car accord;
      }
    
      static class DecoratorAccord extends AbstractDecoratorAccord {
    
        public DecoratorAccord(Car car){
          super.accord = car;
        }
        @Override
        public void operation() {
          if (accord != null) {
            accord.operation();
            System.out.println("HUD抬头显示");
          }
        }
      }
    
      public static void main(String[] args) {
    Car car = new DecoratorAccord(new Accord());
    car.operation();

    } }

     装饰模式和适配器模式有些相似,但是适配器更多的是进行功能转换,而装饰更多的是扩展功能。

    装饰模式中装饰器和组件保持了同一接口,而适配器并不需要。

  • 相关阅读:
    制作 MarkText 的导航栏和动画背景
    某雅互动静态页面
    html5 拖拽及用 js 实现拖拽
    九宫格
    phaser3 入门实例——收集星星游戏
    Flexbox Froggy:练习 Flex 布局的小游戏
    JS30
    ElasticSearch
    JVM
    jstack命令的使用
  • 原文地址:https://www.cnblogs.com/sstone/p/8472852.html
Copyright © 2011-2022 走看看