装饰器模式

定义:装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

  1,1不改变原类文件。

  2,不使用继承。

  3,动态扩展。
//先创建一个待修饰的类 
public class Component{
  //创建一个方法
  void method();
}
//创建需要装饰的类的具体实现类 按照规矩来 

public  class ComonentServiceImpl  implements Component {

    
    public void method(){
    System.out.println("Hello word");
    }

}
//创建装饰类 装饰类最好是抽象类 因为抽象类继承接口 可以不去实现 
public abstract class dectorator implement  Component{
  proteced Component component;
  
  public   dectorartor(Component component){
      this.component=component;
  }
   public void method(){
     this.component.method;
   }
}
package com.md.decorator;

public class ConcreteDecoratorAA extends DecotratorA {


    public ConcreteDecoratorAA(ComponentA componentA) {
        super( componentA );
    }

    @Override
    public void method() {
        System.out.println( "继承AA" );
        super.method();
        System.out.println( "继承AA结束" );
    }
}


package com.md.decorator;

public class MainA {

    public static void main(String[] args) {
        //原来的方法
        ComponentA componentA = new ConcreateComponentA();
        componentA.method();
        //装饰A的方法
        ConcreteDecoratorAA concreteDecoratorAA = new ConcreteDecoratorAA();
        concreteDecoratorAA.method();
    }
}

graph BT
        A["ComonentServiceImpl"] -->B["Component"]
       C["dectorator"]---B["Component"]
       D["DecotratorA"]-->C["dectorator"]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.初识装饰模式 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。 Compone...
    王侦阅读 709评论 0 0
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 3,993评论 1 15
  • 女人收拾屋子时,在柜子底部发现了一个本子,翻开第一页,上面歪歪扭扭地用笔写着: “不知从什么时候,开始厌恶她的声音...
    晒鱼先森阅读 370评论 0 7
  • ss的lg每天会打电话给他,可是每次ss都是极其恶劣的态度,似乎已经两年多了。我问ss,这样他能忍受,回答说:是的...
    海边的桃源阅读 114评论 0 0
  • 依恋聚焦治疗,书。 成长型思维训练,书
    张爱芳_7603阅读 202评论 0 0