摘要:本文主要向大家介绍了JAVA语言设计模式之装饰模式代码实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言设计模式之装饰模式代码实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
Decorator(装饰)
意图:
动态地给 一个对象添加一些额外的职责。就添加功能来说,Decorator模式相比生成子类更为灵活。
类图:
代码:
/**
*
* @ClassName: CheeseCake
* @Description: 蛋糕实现类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class CheeseCake extends Cake{
@Override
public void show() {
System.out.println("CheeseCake");
}
}
/**
*
* @ClassName: Cake
* @Description: 抽象蛋糕类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public abstract class Cake {
public abstract void show();
}
/**
*
* @ClassName: CheeseCake
* @Description: 蛋糕实现类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class CheeseCake extends Cake{
@Override
public void show() {
System.out.println("CheeseCake");
}
}
/**
*
* @ClassName: FruitCake
* @Description: 蛋糕实现类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class FruitCake extends Cake{
@Override
public void show() {
System.out.println("FruitCake");
}
}
/**
*
* @ClassName: Decorator
* @Description: 蛋糕实现类 蛋糕装饰器
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public abstract class Decorator extends Cake {
Cake cake;
public Decorator(Cake cake) {
this.cake = cake;
}
@Override
public void show() {
cake.show();
funExtends();
}
public abstract void funExtends();
}
/**
*
* @ClassName: WithFlag
* @Description: 蛋糕装饰器实现类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class WithFlag extends Decorator{
public WithFlag(Cake cake) {
super(cake);
}
@Override
public void funExtends() {
System.out.println("FunExtends");
}
}
/**
*
* @ClassName: WithFlower
* @Description: 蛋糕装饰器实现类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class WithFlower extends Decorator{
public WithFlower(Cake cake) {
super(cake);
}
@Override
public void funExtends() {
System.out.println("WithFlower");
}
}
/**
*
* @ClassName: Yufan
* @Description: 装饰器测试类
* @author 雨ゆこ
* @date 2018年5月1日
* @version yuko1.0
*/
public class Yufan {
public static void main(String[] args) {
Cake c = new WithFlag(new FruitCake());
Cake c1 = new WithFlower(new CheeseCake());
c.show();
c1.show();
}
}
测试结果:
个人理解:
对原来接口的功能进行扩展,添加上新的功能。
装饰器 本身就是该接口的 一个实现。同时需要兼容其他实现,所以提供了一个带参数的构造方法。
在接口的基础上利用抽象来进行扩展。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号