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();

    } }

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

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

  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/sstone/p/8472852.html
Copyright © 2011-2022 走看看