• 设计模式-装饰者模式


    结构图:

    实现:

    1 abstract public class Component {
    2     abstract public void operation();
    3 }
    public class ConcreteComponent extends Component {
    
        @Override
        public void operation() {
            System.out.println("具体操作");
        }
    
    }
     1 public class Decorator extends Component{
     2     protected Component component;
     3     
     4     public void setComponent(Component c)
     5     {
     6         component = c;
     7     }
     8 
     9     @Override
    10     public void operation() {
    11         if (component != null)
    12             component.operation();
    13     }
    14 
    15 }
     1 public class ConcreteDecoratorA extends Decorator{
     2 
     3     @Override
     4     public void operation() {
     5         super.operation();
     6         
     7         System.out.println("增加装饰A的操作");
     8     }
     9     
    10 
    11 }
     1 public class ConcreteDecoratorB extends Decorator{
     2 
     3     @Override
     4     public void operation() {
     5         super.operation();
     6         
     7         System.out.println("增加装饰B的操作");
     8     }
     9     
    10 
    11 }
     1 public class Client {
     2     public static void main(String[] args)
     3     {
     4         ConcreteComponent cc = new ConcreteComponent();
     5         ConcreteDecoratorA cda = new ConcreteDecoratorA();
     6         ConcreteDecoratorB cdb = new ConcreteDecoratorB();
     7         
     8         cda.setComponent(cc);
     9         cdb.setComponent(cda);
    10         cdb.operation();
    11         
    12     }
    13 }

    应用场景:

    适应于给一个对象动态添加额外的功能。

  • 相关阅读:
    Fundamentals of Garbage Collection
    CLR的八大特性
    Navigation and Pathfinding
    Work-Stealing in .NET 4.0
    Graphics.Blit
    整数的可除性
    关于强度
    重心坐标空间
    性能测试中TPS和并发用户数
    LoadRunner 12.02 安装以及汉化教程
  • 原文地址:https://www.cnblogs.com/gatsbydhn/p/4998773.html
Copyright © 2020-2023  润新知