内容简介:装饰器模式属于结构型模式,在不改变对象结构的前提下,给一个对象动态的增加新的功能装饰器模式可以为一个现有的类增加新功能,又不改变其结构,要求装饰类和被装饰类实现同一个接口,装饰类持有被装饰类的实例
装饰器模式属于结构型模式,在不改变对象结构的前提下,给一个对象动态的增加新的功能
装饰器模式
装饰器模式可以为一个现有的类增加新功能,又不改变其结构,要求装饰类和被装饰类实现同一个接口,装饰类持有被装饰类的实例
类图
- Source:被装饰类
- Decorator:装饰类,持有Source类实例,装饰Source类,为Source类动态添加新功能
代码
以打电话为例,涉及Phoneable(接口),Phone(被装饰类),Decorator(装饰类)
Phoneable
被装饰类和装饰类都实现此接口
/**
* @author: chenmingyu
* @date: 2019/3/1 10:20
* @description: 手机接口
*/
public interface Phoneable {
/**
* 打电话
*/
void call();
}
Phone
被装饰类,实现Phoneable接口
/**
* @author: chenmingyu
* @date: 2019/3/1 10:19
* @description: 被装饰类
*/
public class Phone implements Phoneable{
@Override
public void call() {
System.out.println("打电话");
}
}
Decorator
装饰类,实现Phoneable接口,持有被装饰类实例
/**
* @author: chenmingyu
* @date: 2019/3/1 10:26
* @description: 装饰类
*/
public class Decorator implements Phoneable{
private Phone phone;
public Decorator(Phone phone) {
this.phone = phone;
}
@Override
public void call() {
System.out.println("装饰器模式 前置功能:打电话先拨号");
phone.call();
System.out.println("装饰器模式 后置功能:挂断电话");
}
}
输出
装饰器模式 前置功能:打电话先拨号 打电话 装饰器模式 后置功能:挂断电话
当我们要拓展一个类的功能时,可以选择使用集成或者装饰器模式,继承的实现是静态,而装饰器模式实现的是动态的,装饰器模式的缺点是会产生很多功能类似的类
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 设计模式——订阅模式(观察者模式)
- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- java23种设计模式-门面模式(外观模式)
- 设计模式-享元设计模式
- Java 设计模式之工厂方法模式与抽象工厂模式
- JAVA设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web信息架构(第3版)
[美] Peter Morville、Louis Rosenfeld / 陈建勋 / 电子工业出版社 / 2013-10 / 99.00元
本书内容涵盖了信息架构基本原理和实践应用的方方面面。全书共7个部分,包括信息架构概述、信息架构的基本原理、信息架构的开发流程和方法论、信息架构实践、信息架构与组织、两个案例研究,以及参考资料清单。 本书兼具较高的理论价值和实用价值,曾被Web设计领域多本书籍重点推荐,是信息架构领域公认的经典书籍,不论新手还是专家都能各取所需。本书可供Web设计与开发者、Web架构师、网站管理者及信息管理相关......一起来看看 《Web信息架构(第3版)》 这本书的介绍吧!