JAVA 的IO模块如果不使用装饰模式,会需要更多的IO类,如带缓冲的并能读取基本类型的类、读取字节数组的缓冲类等等。
package com.test.decrator;
//抽象构件角色
public interface Component {
public void dosometing();
}
package com.test.decrator;
//具体构件角色
public class ConcreteComponent implements Component {
public void dosometing() {
System.out.println("功能A");
}
}
package com.test.decrator;
//装饰角色
public class Decorator implements Component {
private Component component;
public Decorator(Component component){
this.component = component;
}
public void dosometing() {
component.dosometing();
}
}
package com.test.decrator;
//具体装饰角色1
public class ConcreteDecorator1 extends Decorator {
public ConcreteDecorator1(Component component) {
super(component);
}
public void dosometing() {
super.dosometing();
this.doAnotherthing();
}
private void doAnotherthing(){
System.out.println("功能B");
}
}
package com.test.decrator;
//具体装饰角色2
public class ConcreteDecorator2 extends Decorator {
public ConcreteDecorator2(Component component) {
super(component);
}
public void dosometing() {
super.dosometing();
this.doAnotherthing();
}
private void doAnotherthing() {
System.out.println("功能C");
}
}
package com.test.decrator;
public class Client {
public static void main(String[] args) {
//节点流
Component component = new ConcreteComponent();
//过滤流
Component component2 =new ConcreteDecorator1(component);
//过滤流
Component component3 =new ConcreteDecorator2(component2);
component3.dosometing();
}
}
打印出
功能A
功能B
功能C
学IO最重要的是深刻理解装饰模式!
分享到:
相关推荐
设计模式分为三类:创建型模式(如单例模式、工厂方法模式)、结构型模式(如代理模式、装饰器模式)和行为型模式(如观察者模式、策略模式)。每种模式都有其特定的用途和适用场景。 4. **具体设计模式详解** - ...
8. 装饰模式(Decorator):动态地给一个对象添加一些额外的职责。装饰者模式可以用来扩展功能,而无需修改原有代码。 9. 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。代理模式常用于远程...
### 设计模式:可复用面向对象软件的基础 #### 书籍概述 《设计模式:可复用面向对象软件的基础》是一本由Erich Gamma、Richard Helm等四位国际知名的软件工程师共同编写的经典之作,该书提供了面向对象软件设计中...
总之,《设计模式:基于C#的工程化实现及扩展》是一本对于C#开发者来说非常有价值的参考资料,它不仅讲解了设计模式的理论,还提供了丰富的实践案例,帮助读者掌握如何在实际项目中应用这些模式,提升软件开发的专业...
“[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...
- 装饰模式:为游戏对象动态增加功能,如给角色动态增加装甲或魔法效果等; - 代理模式:用于控制对游戏资源的访问,如延迟加载或异步加载资源。 通过应用设计模式,游戏引擎开发者能够更好地实现软件的复用性、可...
设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。这些模式通过前人的经验总结,为开发人员提供了一种标准化的解决方案,使得代码更易于理解、扩展和维护。本资源《设计模式:可...
总的来说,《设计模式:可复用面向对象软件的基础》是一本深入理解和应用面向对象设计的必备书籍,它不仅介绍了23种核心设计模式,还提供了大量实例和解释,帮助读者将理论知识转化为实际的编程技巧。通过对这本书的...
Spring 设计模式之装饰器模式详解 在软件设计中,经常会遇到需要在不修改原有代码的情况下,添加新的功能或行为。这时,装饰器模式便可以发挥其作用。在 Spring 设计模式中,装饰器模式是非常重要的一种设计模式。 ...
在"设计模式之装饰模式:以售卖咖啡为例"的场景中,我们可以详细解析其应用。 首先,咖啡的选择过程可以看作是基础产品(Component),例如原味咖啡。客户可以选择的基础咖啡类型可能包括拿铁、卡布奇诺等,这些都...
装饰者模式是面向对象设计模式中的一个重要概念,它在C#等编程语言中广泛应用。这个例子以星巴克咖啡为例,展示了如何使用装饰者模式来灵活地扩展对象的功能,而无需修改原有代码。 装饰者模式的核心思想是动态地将...
《设计模式:基于C#的工程化实现及扩展》是一份深入探讨软件设计模式的宝贵资源,它提供了C#语言下的具体实现与扩展,旨在帮助开发者提升代码的可读性、可维护性和可复用性。这个压缩包包含了多个源码文件,分别命名...
装饰者模式是软件设计模式中的一种结构型模式,它的主要目的是动态地给对象添加新的功能,而无需修改原有代码。在Java中,装饰者模式通常通过继承和组合来实现,它提供了一种比继承更灵活的方式来扩展对象的功能。...
9. 装饰模式:装饰模式动态地给对象添加一些额外的职责,提供比继承更具有弹性的扩展方式。 10. 外观模式:外观模式为复杂的子系统提供了一个简单的接口,简化了客户端代码。 11. 享元模式:享元模式通过共享技术...
在《设计模式:可复用面向对象软件的基础》一书中,作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(通常被称为GoF,Gang of Four)详细阐述了23种经典的设计模式。这些模式分为三类:创建型模式、...
4. 装饰模式:动态地给一个对象添加一些额外的职责,增加功能而不改变其原有结构。 5. 外观模式:为复杂的子系统提供一个简单的接口。 6. 享元模式:运用共享技术有效地支持大量细粒度的对象。 7. 代理模式:为其他...
装饰模式是一种设计模式,它是结构型模式的一种,用于在运行时动态地给对象添加新的行为或职责。这种模式允许我们独立于对象的类来扩展其功能,而不必修改原有代码,实现了对对象的透明增强。装饰模式的核心在于,它...
- 装饰模式:动态地给对象添加一些额外的职责,为对象添加新的行为或属性而不改变其结构。 - 外观模式:提供一个统一的接口,用来访问子系统中的多个接口。 - 代理模式:为其他对象提供一种代理以控制对这个对象...