Java设计模式:装饰者模式
来源:互联网 发布:26周胎儿四维彩超数据 编辑:程序博客网 时间:2024/06/06 12:15
关注微信公众号
动态地给一个对象添加一些额外的职责。就增加功能来说, D e c o r a t o r模式相比生成子类更为灵活。
以下情况使用D e c o r a t o r模式
• 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
• 处理那些可以撤消的职责。
• 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。
另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
输出语句如下:
住在北京路那里的人的房租3000.0
住在北京路那里的人的房租1楼5000.0
住在北京路那里的人的房租2楼4000.0
public
class
Test {
public
static
void
main(String[] args) {
Peopleo p=
new
Peopleo();
System.out.println(p.name()+p.price());
BeiJinLu1 A=
new
BeiJinLu1(p);
System.out.println(A.name()+A.price());
BeijinLu2 B=
new
BeijinLu2(p);
System.out.println(B.name()+B.price());
}
//要添加的附加功能的接口,抽象被装饰者接口,地址这个接口,存放了地址跟房租的价格两个成员
public
static
interface
Address {
public
String name();
public
float
price();
}
//新建一个具体的装饰者类,因为接口不能被new,只能子类化,这个子类设置了两个基本参数.创建了People其实也就是跟接口绑定了同个内存地址
static
class
Peopleo
implements
Address{
@Override
public
String name() {
return
"住在北京路那里的人的房租"
;
}
@Override
public
float
price() {
return
3000f;
}}
//抽象的北京路,核心的类
//实现了Address并且具备了Address作为自己的成员,抽象类实现抽象接口,就要实现抽象的方法,而抽象方法的返回值,设置为接口的方法
static
abstract
class
BeijinLu
implements
Address{
private
Address a;
public
BeijinLu(Address a) {
super
();
this
.a = a;
}
@Override
public
String name() {
return
a.name();
}
@Override
public
float
price() {
return
a.price();
}
}
//具体子类--北京路1楼
public
static
class
BeiJinLu1
extends
BeijinLu{
public
BeiJinLu1(Address a) {
super
(a);
}
@Override
public
String name() {
return
super
.name()+
"1楼"
;
}
@Override
public
float
price() {
return
super
.price()+2000f;
}
}
//具体子类--北京路2楼
public
static
class
BeijinLu2
extends
BeijinLu{
public
BeijinLu2(Address a) {
super
(a);
}
@Override
public
String name() {
return
super
.name()+
"2楼"
;
}
@Override
public
float
price() {
return
super
.price()+1000f;
}
}
}
0 0
- Java设计模式-装饰者设计模式
- java设计模式---装饰者设计模式
- Java 装饰者设计模式
- Java设计模式--装饰者
- Java设计模式:装饰者模式(Decorator)
- java设计模式之装饰者模式
- 【Java设计模式】装饰者模式
- Java设计模式之装饰者模式
- JAVA系列-设计模式-装饰者模式
- java设计模式之装饰者模式
- Java 设计模式 装饰者模式
- Java设计模式之装饰者模式
- Java设计模式之装饰者模式
- java设计模式------装饰者模式
- Java设计模式之装饰者模式
- java设计模式--装饰者模式
- Java 设计模式 装饰者模式
- java设计模式 ----装饰者模式
- These values must match for an upgrade to be allowed.
- CDH分支节点无法被监听,错误提示ValueError: too many values to unpack
- 底部导航之RadioGroup
- Android5.0、6.0新特性(1)
- P1265 公路修建
- Java设计模式:装饰者模式
- 超级素数幂解题报告
- 【JavaScript】异步编程,保证同时完成的方法
- 上传图片时js验证图片大小、尺寸、格式
- leetcode 455. Assign Cookies
- 概率统计专项练习
- 底部菜单控件-BottomNavigationView的使用
- 输出A+B的M进制
- Webpack+cnpm学习:第一篇