Java之装饰模式学习

这篇文章主要为大家详细介绍了java设计模式学习之装饰模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。

优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。

缺点:多层装饰比较复杂。

实例:给一个人配置穿衣

1:代码结构图

2:创建一个person类( ConcreteComponent)

package DecoratorModel;/** * 2017-10-9 10:39:09 * 装饰器设计模式 * Person 类 ConcreteComponent * @author 我不是张英俊 * */public class Person {  public Person(){}    private String name;  public Person(String name){    this.name=name;  }    public void Show(){    System.out.println("装扮的"+name);  }}

3:服饰类

package DecoratorModel;/** *服饰类(Decorator) * @author 我不是张英俊 * */public class Finery extends Person{  protected Person component;  //打扮  public void Decorate(Person component){    this.component=component;  }    public void Show(){    if(component!=null){      component.Show();    }  }}

4:具体服饰类

public class Tshirts extends Finery {  public void Show(){    System.out.println("大T恤");    super.Show();    }}public class BigTrouser extends Finery {  public void Show(){    System.out.println("垮裤");    super.Show();  }}public class Sneakers extends Finery {  public void Show(){    System.out.println("破球鞋");    super.Show();    }}public class Suit extends Finery {  public void Show(){    System.out.println("西装");    super.Show();  }}public class Tie extends Finery {  public void Show(){    System.out.println("领带");    super.Show();  }}public class LeatherShoes extends Finery {  public void Show(){    System.out.println("皮鞋");    super.Show();  }}

5:测试类

public class test {  public static void main(String[] args) {    Person xc=new Person("旺财");        Sneakers pqx=new Sneakers();    BigTrouser kk=new BigTrouser();    Tshirts dtx=new Tshirts();    pqx.Decorate(xc);    kk.Decorate(pqx);    dtx.Decorate(kk);    dtx.Show();  }}

6:控制台

大T恤垮裤破球鞋装扮的旺财

以上就是Java之装饰模式学习的详细内容,更多请关注其它相关文章!

最好的节约是珍惜时间,最大的浪费是虚度年华。

Java之装饰模式学习

相关文章:

你感兴趣的文章:

标签云: