Java程序性能优化 读书笔记(五)设计模式:装饰者模式
2017-10-30 23:27
531 查看
一、装饰者模式
在基本的设计原则中,有一条重要的设计准则就是合成/聚合复用原则。根据该原则的思想,代码复用应该尽可能使用委托,而不是使用继承。因为继承是一种紧密耦合,父类的任何改动都会影响其子类,不利于系统维护。而委托是松散耦合,只要接口不变,委托类的改变不会影响其上层对象。装饰者模式就是充分利用这种思想,利用委托,复用系统中的各个组件,在运行时,可以将这些组件进行叠加,构成一个“超级对象”,使其拥有各个组件的功能。而各个子模块的功能,被很好的维护在了相关组件的类中,拥有整洁的系统结构。
装饰者模式可以有效的分离性能组件和功能组件,从而提升系统的可维护性并增加模块的复用。
装饰者和被装饰者实现相同的接口,被装饰者通常是核心组件,完成特定的功能目标。而装饰者可以在被装饰者的前后,加上特定的前置和后置处理,增强被装饰者的功能。
二、装饰者的示例
装饰者模式案例:对输出结果的增强。首先将结果转换成html文本,再添加html头。代码实现如下。接口实现:
public interface IPacketCreator {
public String handleContent();
}被装饰者类:
public class PacketBodyCreator implements IPacketCreator { @Override public String handleContent() { return "Content of oacket"; } }被装饰者核心组件:
public abstract class PacketDecorator implements IPacketCreator { IPacketCreator component; public PacketDecorator(IPacketCreator component) { this.component = component; } }装饰者:
public class PacketHtmlHanderCreator extends PacketDecorator { public PacketHtmlHanderCreator(IPacketCreator component) { super(component); } @Override public String handleContent() { StringBuffer sb = new StringBuffer(); sb.append("<html>"); sb.append("<body>"); sb.append(component.handleContent()); sb.append("</html>"); sb.append("</body>"); return sb.toString(); } }客户端代码:
public class Client { public static void main(String[] args) { IPacketCreator packetCreator = new PacketHttpHeaderCreator(new PacketHtmlHanderCreator(new PacketBodyCreator())); System.out.println(packetCreator.handleContent()); } }
三、装饰者的使用场景
1. JDK中的OutPutStread和InPutStream的类族就是装饰者模式的典型应用,通过嵌套方式不断的将对象聚合起来,最终形成一个超级对象,使之拥有所以相关子对象的功能。2. Java Spring AOP
3. Servlet Filter
相关文章推荐
- Java程序性能优化 读书笔记(三)设计模式:代理模式
- Java程序性能优化 读书笔记(七)设计模式:ValueObject模式
- Java程序性能优化 读书笔记(十)并行设计模式:Future模式
- Java程序性能优化 读书笔记(二)设计模式:单例模式
- Java程序性能优化 读书笔记(四)设计模式:享元模式
- Java程序性能优化 读书笔记(十四)并行设计模式:生产者-消费者模式
- Java程序性能优化 读书笔记(十三)并行设计模式:不变模式
- Java程序性能优化 读书笔记(六)设计模式:观察者模式
- Java程序性能优化 读书笔记(十二)并行设计模式:Guarded Suspension模式
- Java程序性能优化 读书笔记(十一)并行设计模式:Master-Worker模式
- java 程序性能优化《第二章》设计优化 2.1善用设计模式 1 单例模式
- java程序性能优化之设计优化--设计模式:单例模式(1)
- java 程序性能优化《第二章》设计优化 2.1善用设计模式 2 代理模式
- java程序性能优化---2--2.1常有设计模式
- 读书笔记之Java程序性能优化
- Java程序性能优化读书笔记(一):Java性能调优概述
- Java程序性能优化 读书笔记(一)Java性能调优概述
- java程序性能优化之设计优化--优化组件和方法(2)
- JAVA性能优化之设计模式
- 【Java程序性能优化】-读书笔记第3章