//与composite一样都采用递归组合实现
public class Decorator {
// 抽象父类
abstract class Ingredient {
public abstract void getDescription();
}
// 面包
class Bread extends Ingredient {
String desc;
public Bread(String desc) {
this.desc = desc;
}
@Override
public void getDescription() {
System.out.println(desc);
}
}
//抽象装饰类
//BreadDecorator与Ingredient即泛化又组合
abstract class BreadDecorator extends Ingredient {
Ingredient ingredient;
public BreadDecorator(Ingredient ingredient) {
this.ingredient = ingredient;
}
}
//夹肉
class Pork extends BreadDecorator {
public Pork(Ingredient ingredient) {
super(ingredient);
}
@Override
public void getDescription() {
ingredient.getDescription();
System.out.println("pork decorate...");
}
}
//夹蔬菜
class Vegetable extends BreadDecorator {
public Vegetable(Ingredient ingredient) {
super(ingredient);
}
@Override
public void getDescription() {
ingredient.getDescription();
System.out.println("vegetable decorate...");
}
}
public static void main(String[] args){
Decorator decorator = new Decorator();
Ingredient ingredient = decorator.new Pork(decorator.new Bread("pork bread..."));
ingredient.getDescription();
Ingredient ingredient2 = decorator.new Vegetable(decorator.new Pork(decorator.new Bread("vegetable pork bread...")));
ingredient2.getDescription();
}
}
//http://miaoxiaodong78.blog.163.com/blog/static/18765136200701232434996/
分享到:
相关推荐
装饰模式(Decorator Pattern)是设计模式中的一种结构型模式,它在不改变原有对象的基础上,通过添加额外的职责来扩展对象的功能。在C#中,装饰模式尤其适用于那些需要动态地增加或减少对象功能的情况,避免了使用...
装饰模式(Decorator Pattern)是一种结构型设计模式,它在不改变原有对象的基础上,通过包裹一个对象并为其添加新的行为或责任,实现对对象功能的扩展。这种模式在软件开发中非常常见,尤其当需要在运行时动态改变...
装饰模式(Decorator Pattern)是一种结构型设计模式,允许在不改变对象接口的情况下,动态地为对象添加额外的职责或功能。装饰模式通常用于需要扩展对象功能而又不希望使用子类化的场景。 装饰模式的组成 组件接口...
Decorator模式,也称为装饰模式,是设计模式中的一个重要组成部分,它在不改变原有对象接口的前提下,动态地给对象添加新的功能,从而扩展了对象的能力。这篇博客()将深入探讨这个模式的细节。 装饰模式的核心...
【Decorator模式】是一种设计模式,它允许在运行时动态地给对象添加新的责任或功能,而不必通过子类化的方式。在上述的奇幻RPG游戏中,Decorator模式被用来实现武器的锻造过程,尤其是武器镶嵌宝石的功能。这个过程...
装饰者模式(Decorator Pattern)是结构型设计模式之一,它允许动态地给一个对象添加新的功能,而无需修改其原有代码。这个模式的核心思想是通过将对象封装在一个包装器(Decorator)中来扩展其行为,而包装器和原始...
装饰模式(Decorator)是软件设计领域中一种非常实用的结构型设计模式,它允许我们向一个对象添加新的行为或责任,而无需修改该对象的源代码。在C++编程语言中,装饰模式常用于动态地扩展类的功能,使得类的行为在...
《设计模式之Decorator》 设计模式是软件工程中的一种最佳实践,它是在特定场景下解决常见问题的经验总结。Decorator模式是一种结构型设计模式,它的主要作用是为对象添加额外的功能,而无需修改对象的源代码。...
装饰者模式是软件设计中的一种行为模式,它允许在运行时动态地给对象添加新的行为或职责,而无需改变对象的原始类。这种模式在不违反开闭原则的前提下,提供了扩展对象功能的能力,使得系统更加灵活,易于维护。 在...
装饰模式(Decorator Pattern)是一种结构型设计模式,它允许你向一个现有的对象添加新的功能,同时又不改变其结构。装饰模式通过创建一个装饰类,该类包装了原始类的实例,并在调用原始类方法之前或之后添加额外的...
在给定的“设计模式 t07Decorator”主题中,我们聚焦于装饰者模式(Decorator Pattern)。装饰者模式是一种结构型设计模式,它允许我们在运行时给对象添加新的行为或职责,而无需修改其原有代码。这种模式遵循开闭...
总的来说,装饰者模式是一种强大的设计模式,它提供了一种在运行时动态调整对象行为的方法,使得代码更具灵活性和可扩展性。通过理解和熟练运用装饰者模式,我们可以更好地应对软件需求的变化,提高代码的可维护性和...
在给定的标题“设计模式之装饰模式”中,我们可以深入探讨以下几个方面: 1. **装饰模式的基本结构**:装饰模式通常包括四个角色:抽象组件(Component)接口,具体组件(Concrete Component)类,抽象装饰...
Java设计模式中的Builder模式和Decorator模式是两种重要的设计模式,它们在软件开发中起到优化代码结构、提高代码复用性和灵活性的作用。 1. 建造者模式(Builder) 建造者模式是一种创建型设计模式,它的主要目的...
装饰模式(Decorator)是软件设计模式中的一种结构型模式,其主要目的是在不改变对象原有类的基础上,通过添加新的行为或职责来扩展对象的功能。这种模式使得代码的扩展性非常优秀,避免了由于频繁地使用继承而导致...