装饰者模式
Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。
意图:
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。
设计原则:
1. 多用组合,少用继承。
利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。
2. 类应设计的对扩展开放,对修改关闭。
上代码实例
public interface Order {
public void print();
}
public class SalesOrder implements Order {
public void print() {
}
}
public class OrderDecorator implements Order {
protected Order order;
public OrderDecorator(Order order) {
this.order = order;
}
public void print() {
System.out.println("Order");
}
}
public class HeaderDecorator extends OrderDecorator {
public HeaderDecorator(Order order) {
super(order);
}
public void print() {
printHeader();
super.order.print();
}
public void printHeader() {
System.out.println("Header");
}
}
public class FooterDecorator extends OrderDecorator {
public FooterDecorator(Order order) {
super(order);
}
public void print() {
super.order.print();
printFooter();
}
public void printFooter() {
System.out.println("Footer");
}
}
public class Client {
public static void main(String[] args) {
Order order = new SalesOrder(); //本来是个销售订单
order = new OrderDecorator(order); //我们销售订单装饰一下,就可以打印比如发票订单详细
order = new FooterDecorator(order); //再装饰一下,就可以打印发票尾部
order = new HeaderDecorator(order); //再装饰一下,可以打印发票头部
order.print(); //就一个打印就可以打印所有内容了,神奇吧 哈哈
}
}
打印结果
Header
Order
Footer
其实Java中的流操作就是使用的装饰模式
- 大小: 40.5 KB
- 大小: 47.8 KB
分享到:
相关推荐
"易学设计模式源码光盘" 提供了一种直观的学习方式,帮助初学者更轻松地理解和应用这些模式。这里我们将深入探讨设计模式的核心理念、主要分类以及一些常见设计模式的实现细节。 首先,设计模式的出现源于对软件...
### 易学设计模式知识点详解 #### 一、设计模式概览 设计模式是一种软件设计中的通用解决方案,它描述了一种在特定情境下用来解决问题的重复出现的设计结构。设计模式可以帮助开发者更好地理解如何构建可扩展、可...
《易学 设计模式》 郭志学 编著 随书源代码 ☆ 章节清单:☆ 第01章 欲速则不达:了解设计模式 第02章 磨刀不误砍柴工:UML语言概述 第03章 术业有专攻:简单工厂模式 (SimpleFactory) 第04章 精益求精:工厂方法...
"java-易学设计模式"这个压缩包很可能是包含了一些关于Java设计模式的示例源代码,方便学习者理解和掌握。 首先,我们来讨论一下设计模式的基本分类。设计模式分为三类:创建型模式、结构型模式和行为型模式。 1. ...
这份名为"设计模式例子文档,简单易学"的资源,显然是为了帮助开发者更直观、更快速地理解和应用设计模式。设计模式并非具体的代码或库,而是一种通用的解决方案模板,可以在不同的软件开发过程中复用,以提高代码的...
在“易学设计模式代码”这个压缩包中,你将找到这些模式的Java实现示例。通过阅读和分析这些代码,你可以更好地理解每种模式的核心思想,以及如何在实际项目中应用它们。同时,虽然这里的示例是基于Java,但设计模式...
本资源是 Java 面试题目的总结,涵盖了 Java 基础、多线程、设计模式、JVM、数据结构与算法、数据库、Spring、Netty、缓存、技术框架、技术深度、分布式、系统架构、LINUX、TCP/IP 等多方面的知识点。 Java 基础 ...
装饰器是一种设计模式,用于在不修改原函数代码的情况下,给函数添加新的功能。装饰器本质上是一个接受函数作为参数的函数,并返回一个新的函数。 **装饰器的应用场景**: 1. **日志记录**:记录函数的调用情况。 ...
8. **高级主题**:随着学习的深入,可能会接触到装饰器(decorator)、生成器(generator)、上下文管理器(with statement)等高级特性,这些都是Python独特且强大的工具。 通过解答《Python程序设计》的课后习题...
本书将介绍设计模式,如工厂模式、单例模式等,以及SOLID原则,帮助你写出可扩展、可维护的代码。 九、实战项目 理论结合实践是最佳的学习方式。书中将提供一些实际项目案例,如Web应用开发、数据分析、机器学习等...
- **设计模式**:工厂模式、单例模式、装饰器模式等常见设计模式的理解和应用。 3. **高级Python特性**: - **生成器(Generator)**:理解迭代器和生成器的概念,使用yield关键字创建生成器函数。 - **上下文...
- 函数装饰器(decorator):用于修改或增强函数的功能。 5. **异常处理**: - try-except语句:捕获并处理运行时错误。 - finally子句:无论是否发生异常,finally代码块都会执行。 6. **文件操作**: - 打开...