Flask接口签名sign原理与实例代码浅析
244
2023-03-27
java设计模式学习之装饰模式
装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。
优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
缺点:多层装饰比较复杂。
实例:给一个人配置穿衣
1:代码结构图
2:创建一个person类( ConcreteComponent)
package DecoratorModel;
/**
* 2017-10-9 10:39:09
* 装饰器设计模式
* Person 类 ConcreteComponent
* @author 我不是张英俊
*
*/
public class Person {
public Person(){}
private String name;
puhttp://blic 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 dtxhzGlrlM=new Tshirts();
pqx.Decorate(xc);
kk.Decorate(pqx);
dtx.Decorate(kk);
dtx.Show();
}
}
6:控制台
大T恤
垮裤
破球鞋
装扮的旺财
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~