java装饰者模式应用场景,java装饰设计模式
00-1010定义案例需求方案分析和使用场景知识点补充
00-1010 Decorator模式:在不改变原有对象的基础上,动态地给对象附加函数,为继承提供了更灵活的替代方式,也体现了开放封闭原则。
目录
一个男人去咖啡店点了一杯卡布奇诺和一杯热牛奶。
00-1010定义咖啡基本类别
公抽象类咖啡{私串desc;私人浮动价格;公共抽象浮动成本();公共字符串getDesc() {返回desc;} public void setDesc(字符串desc){ this . desc=desc;} public float getPrice(){ return price;} public void setPrice(浮动价格){ this.price=price}}定义cappuccino类,继承coffee基类。
Class cappuccino扩展coffee { public cappuccino(){ set desc( ordered a cappuccino );设定价格(100);} @ override public float cost(){ system . out . println(当前价格为: super . getprice());return super . getprice();}}定义装饰器类
公共课装饰师延伸咖啡{私咖咖啡;公共装饰师(Coffee Coffee){ this . Coffee=Coffee;} @ Override public float cost(){ return super . getprice()this . coffee . cost();} @Override公共字符串get desc(){ return super . get desc()coffee . cost();}}定义热牛奶。
public class hot milk extends Decorator { public hot milk(Coffee Coffee){ super(Coffee);设定价格(200);SetDesc(点了一杯热牛奶);}}定义一个测试类
public class test { public static void main(string[]args){//点了一杯卡布奇诺,加了一杯热牛奶咖啡Coffee=new Cappuccino();system . out . println(coffee . get desc());//system . out . println(coffee . getprice());system . out . println(coffee . cost());HotMilk hotMilk=新热牛奶(咖啡);system . out . println(hot milk . get desc());//system . out . println(hot milk . getprice());system . out . println(hot milk . cost());}}检查测试结果
00-1010 Decorator模式也是为了扩展对象的功能,是继承的替代模式,可以动态扩展一个实现类的功能。Decorator类和decorated类可以相互独立,不耦合,灵活方便。
00-1010当你需要给一个已经存在的类增加职责,但是又不能通过生成子类来扩展的时候,当你需要组合一个已经存在的基本功能集,会产生很多功能的时候,当对象的功能需求可以动态增加,或者动态撤销的时候。
定义
装饰模式的定义和特点
在软件开发过程中,我们有时希望使用一些已有的组件。这些组件可能只实现一些核心功能。但在不改变其结构的情况下,可以动态扩展其功能。所有这些都可以通过使用装饰器模式来实现。
就像做菜一样,我们需要调料、蔬菜、刀、火等一系列抽象的成分来完成一道菜。
装饰模式的定义:
是指在不改变现有对象结构的情况下,动态地给对象增加一些职责(即增加额外的功能)的模式。属于对象结构模式。在添加功能方面,decorator模式比生成子类更灵活。
特点:
Decorator是继承的有力补充,比继承更灵活。在不改变原有对象的情况下,它可以动态地将功能扩展到一个对象上。即插即用可以通过使用不同的装饰类以及这些装饰类的排列组合来达到不同的效果。装饰图案可以完全遵守缺点,开闭原则
Decorator模式会增加很多子类,过度使用会增加程序的复杂度。
装饰模式的结构
装饰模式的结构通常包括以下角色
1.抽象组件角色:定义一个抽象接口来标准化准备接受额外职责的对象。
2.ConcreteComponent角色:实现抽象组件,通过修饰角色给它们增加一些职责。
3.抽象装饰器的作用:继承抽象组件,包含具体组件的实例,可以通过其子类扩展具体组件的功能。
4.ConcreteDecorator的作用:实现抽象装饰和向具体组件对象添加额外责任的相关方法。
关于Java decorator模式示例的详细说明,本文就到这里了。关于Java装饰器模式的更多信息,请搜索以前关于流行IT的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。