去年做的电子请帖怎么找原网站,巨量引擎广告投放平台,谷歌网址,网页设计样图与其明天开始#xff0c;不如现在行动#xff01; 文章目录 装饰模式—穿衣服#x1f48e;总结 装饰模式—穿衣服
装饰模式#xff08;Decorator#xff09;可以动态的给对象添加一些额外的职责。 Component是定义一个对象接口#xff0c;可以给这些对象动态地添加职责。… 与其明天开始不如现在行动 文章目录 装饰模式—穿衣服总结 装饰模式—穿衣服
装饰模式Decorator可以动态的给对象添加一些额外的职责。 Component是定义一个对象接口可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象也可以给这个对象添加一些职责。Decorator装饰抽象类从外类来扩展Component类的功能但是对于Component来说是不需要知道Decorator的存在。 现在有一个装扮游戏需要你给主角穿衣服最后只需要在控制台打印出来穿的什么衣服就行。利用装饰模式的思想有一个接口可以给对象动态的添加职责有一个具体的要装饰的人还要有一个装饰的抽象类所有具体的装饰类都继承这个装饰抽象类。
Component对象接口
public interface ICharacter {void show();
}具体的对象
public class Person implements ICharacter{private String name;public Person(String name) {this.name name;}Overridepublic void show() {System.out.println(装扮的 name);}
}装饰抽象类
public abstract class Finery implements ICharacter{protected ICharacter component;public void decorate(ICharacter component) {this.component component;}Overridepublic void show() {if (component ! null) {this.component.show();}}
}具体的装饰类
运动裤
public class SweatPants extends Finery{Overridepublic void show() {System.out.print(运动裤);super.show();}
}T恤衫
public class TShirt extends Finery{Overridepublic void show() {System.out.print(T恤衫);super.show();}
}西装
public class Suit extends Finery{Overridepublic void show() {System.out.print(西装);super.show();}
}皮鞋
public class LeatherShoes extends Finery{Overridepublic void show() {System.out.print(皮鞋);super.show();}
}程序的UML图 总结 装饰模式不需要向旧的类中添加新的装饰代码它提供了一个非常好的解决方案它把每个要装饰的功能放在单独的类中让这个类包装它所需要的装饰对象。总而言之装饰功能就是将类中的装饰功能从类中移除可以简化原有的类。 装饰模式有效的把类的核心职责和装饰功能区分开了而且可以去除相关类中重复的装饰逻辑。 总结
本文中若是有出现的错误请在评论区或者私信指出我再进行改正优化如果文章对你有所帮助请给博主一个宝贵的三连感谢大家