zoukankan      html  css  js  c++  java
  • 设计模式总结2--装饰者模式

    public interface Cake {
    
        public int cost();
    }
    <!-- 装饰蛋糕 -->
    public abstract class CakeDecorator implements Cake{
    
    }
    public class AppleCake extends CakeDecorator{
    
        private Cake cake;
        public AppleCake(Cake cake) {
            this.cake = cake;
        }
        
        @Override
        public int cost() {
            System.out.println("送小蛋糕");
            return cake.cost() + 12;
        }
    
    }
    public class MilkCake implements Cake{
    
        @Override
        public int cost() {
            return 100;
        }
    
    }

    测试

    
    public class Test {
    
        public static void main(String[] args) {
            
            MilkCake mc = new MilkCake();
            
            AppleCake ac = new AppleCake(mc);
            
            OrangeCake oc = new OrangeCake(ac);
            
            //OrangeCake oc = new OrangeCake(new AppleCake(new MilkCake()));
            
            System.out.println(oc.cost());
            
        }
    }

    ===============================================================
    ===============================================================
    <!-- 举例 -->
    OutputStream
      ByteArrayOutputStream
      FileOutputStream
      PipedOutputStream
      FilterOutputStream
        BufferedOutputStream
        DataOutputStream


    ------------------------------------
    装饰者模式
    继承属于扩展形式之一,但不见得是弹性最好的最佳方式
    在我们的设计中,应该允许行为可以被扩展,而无需修改现有的代
    码(开闭原则)
    除了继承,使用装饰者模式也可以让我们扩展行为
    装饰者可以在被装饰者的行为前面、后面加上自己的行为,甚至可
    以将被装饰者的行为取代,而达到特定的目的
    装饰者模式会导致设计中出现许多小对象,如果过度使用,会让程
    序变得复杂

  • 相关阅读:
    Spring MVC(1)Spring MVC的初始化和流程以及SSM的实现
    Spring(四)Spring与数据库编程
    MyBatis(4)-- 动态SQL
    MyBatis(3)-- Mapper映射器
    MyBatis(2)-- MyBatis配置mybatis-config.xml
    MyBatis(1)-- MyBatis介绍
    计算机网络(2)-- URL、HTTP、HTTPS、HTML
    计算机网络(1)- TCP
    Shell脚本编程
    和为定值的多个数
  • 原文地址:https://www.cnblogs.com/itliucheng/p/4226666.html
Copyright © 2011-2022 走看看