设计模式-装饰者模式

来源:互联网 发布:阿里云邮箱地址前缀 编辑:程序博客网 时间:2024/05/17 11:05

装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构。
简单案例:

public interface Hero {      void learnSkills();}//------------------------------------------------------class BlindMonk implements Hero {      private String name;      public BlindMonk(String name) {          this.name = name;      }      @Override      public void learnSkills() {          System.out.println(name + "学习了以上技能!");      }}//------------------------------------------------------//Decorator 技能栏:装饰类class Skills implements Hero{  //持有一个英雄对象接口  private Hero hero;    public Skills(Hero hero) {      this.hero = hero;  }  @Override  public void learnSkills() {      if(hero != null)          hero.learnSkills();  }    }//------------------------------------------------------//ConreteDecorator 技能:Rclass Skill_R extends Skills{      private String skillName;  public Skill_R(Hero hero,String skillName) {      //装饰父类对象      super(hero);      this.skillName = skillName;  }   @Override  public void learnSkills() {      System.out.println("学习了技能R:" +skillName );      //装饰父类方法      super.learnSkills();  }}//------------------------------------------------------public class Test1{  public static void main(String[] args) {      Hero hero = new BlindMonk("李青");      Skills skills = new Skills(hero);      //Skill_R(Hero,SkillName);        Skills r = new Skill_R(skills,"猛龙摆尾");         r.learnSkills();  }}
原创粉丝点击