您的位置:首页 > 其它

大话设计模式--6.装饰模式

2014-06-16 13:24 323 查看
问题:小菜约会该怎么打扮?





package a;

public class Person {
public Person(){;}

private String name;

public Person(String name)
{
this.name=name;
}

public void show()
{
System.out.println("Decorated "+name +":");

}

}

package a;

public class finary extends Person{

private Person p;
public void setDecorate(Person p)
{
this.p=p;
}
public void show()
{
if(p!=null)
{
p.show();
}

}

}

package a;

public class tshirt extends finary{

public void show()
{
super.show();
System.out.println("穿T恤");
}

}

package a;

public class briefs extends finary{
public void show()
{
super.show();
System.out.println("穿超短裤");
}

}

package a;

public class ballshoes extends finary{
public void show()
{
super.show();
System.out.println("穿球鞋");
}

}

package a;

public class ui {
public static void main(String []args)
{
Person  p=new Person("小菜");
tshirt ts=new tshirt();
briefs br=new briefs();
ballshoes ba=new ballshoes();

ts.setDecorate(p);
br.setDecorate(ts);
ba.setDecorate(br);

ba.show();

}
}


作为一个新手 看设计模式  只能大体懂意思 却不能像大牛一样 思考深处的精髓   果然实践少 缺少类似的经历

总结: 装饰模式是为已有功能动态的添加更多功能的一种方式.

当系统需要新功能的时候 向旧的类中添加新的代码,而旧的类中代码 旺旺包括了原有类的核心职责和行为,所以这种装饰方法 使类更加复杂

所以装饰模式提供了一个非常好的方案,把要装饰的功能单独放在一个类中,并让这个类包装它所需要装饰的对象. 从而可以实现 客户端有选择 有顺序的包装

把类的核心功能和装饰部分分开 去除了核心类的装饰逻辑.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: