装饰模式 分手后的思念是犯贱 2021-09-28 07:06 307阅读 0赞 有抽象类名为早餐,现在具体的食物只需继承早餐抽象类,就可以作为早餐。 具体构件类,如只有breakfast抽象类和Hamburger类,满足需求。 如果需求改变,hamburger需要加料,又不能或不想改变Hamburger类,那么需要用装饰者模式,添加抽象装饰类和具体装饰类。 早餐类: public abstract class Breakfast { public String description = "undefined"; public String getDescription() { return description; } public abstract double cost(); } 汉堡类: public class Hamburger extends Breakfast{ public Hamburger() { description = "Hamburger"; } @Override public double cost() { return 15; } } 抽象装饰类: public abstract class CondimentDecorator extends Breakfast{ Breakfast myfood; public CondimentDecorator(Breakfast f) { this.myfood = f; } public String getDescription() { //return super.getDescription();//多态中父类引用指向子类对象,调用某方法时看子类有无重写,有重写可调用。 return myfood.getDescription();//返回子类中重写的getDescription方法 } public double cost() { return myfood.cost();//调用子类中重写的cost方法 } } 具体装饰类: /** * 具体装饰类,继承抽象装饰类,重写方法 * 需要扩展一个类的功能或给一个类添加附加职责,动态给一个对象添加功能,这些功能能动态撤销 * @author Administrator * */ //加火腿 public class Ham extends CondimentDecorator{ public Ham(Breakfast f) { super(f);//父类的构造函数 } public double cost() { return super.cost() + 5;// } public String getDescription() { return super.getDescription() + ",火腿 "; } } 测试 public static void main(String[] args) { Breakfast hamburger = new Hamburger();//点了一个汉堡 System.out.println(hamburger.getDescription() + " " + hamburger.cost()); //加料 Breakfast hamplus = new Ham(hamburger); System.out.println(hamplus.getDescription() + " " + hamplus.cost()); } 结果: Hamburger 15.0 Hamburger,火腿 20.0
相关 装饰模式 转载自:[http://blog.csdn.net/wuzhekai1985/article/details/6672614][http_blog.csdn.net_wuzhe 向右看齐/ 2022年08月11日 08:29/ 0 赞/ 192 阅读
相关 装饰模式 装饰模式 1、他所应对的问题 装饰模式主要是应对,按现有业务返回的结果,无法满足新的业务的需要了。而新的业务只是在原有结果上进行了变动。 真的这种情况 如 悠悠/ 2022年07月17日 15:26/ 0 赞/ 225 阅读
相关 装饰模式 装饰模式 装饰模式:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 即通过不同的组合方式,可以组合出各种不同的行为。 装饰模式结构图如 浅浅的花香味﹌/ 2022年06月05日 01:25/ 0 赞/ 207 阅读
相关 装饰模式 1.使用场景: 在已有的功能上边需要动态的添加新的功能。 2.UML表示 在装饰器模式中通常用以下的几类对象: 抽象构件角色(Project):给出一个接口, 骑猪看日落/ 2022年05月31日 09:27/ 0 赞/ 249 阅读
相关 装饰模式 定义 装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类模式更加灵活。 结构图 ![这里写图片描述][70] 装饰模式的简化: - 日理万妓/ 2022年05月14日 11:28/ 0 赞/ 233 阅读
相关 装饰模式 1、一个相片放入了相框,那么相框装饰了相片。相片相当于component类,相框相当于Decorator类。我们可以发现,相框里面包含一个相片,所以有了一个has-a的关系;但 àì夳堔傛蜴生んèń/ 2022年02月23日 14:40/ 0 赞/ 204 阅读
相关 装饰模式 Decorator装饰模式是一种结构型模式,它主要是解决:“过度地使用了继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩 本是古典 何须时尚/ 2022年02月23日 14:38/ 0 赞/ 218 阅读
相关 装饰模式 概述 23种设计模式之一,英文叫DecoratorPattern,中文也叫装饰模式、修饰模式。装饰模式是在不改变类文件和不使用继承的情况下,运行期动态扩展一个对象的功能。 迷南。/ 2022年02月16日 19:11/ 0 赞/ 208 阅读
相关 装饰模式 前言 装饰模式(Decorator),动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 一、Component抽象类 绝地灬酷狼/ 2021年12月09日 00:43/ 0 赞/ 251 阅读
相关 装饰模式 有抽象类名为早餐,现在具体的食物只需继承早餐抽象类,就可以作为早餐。 具体构件类,如只有breakfast抽象类和Hamburger类,满足需求。 如果需求改变,hamb 分手后的思念是犯贱/ 2021年09月28日 07:06/ 0 赞/ 308 阅读
还没有评论,来说两句吧...