Decorator装饰器模式Java示例学习
来源:互联网 发布:山东齐鲁网络电视台 编辑:程序博客网 时间:2024/04/28 20:10
使用小时候玩的游戏坦克大战来模拟设计模式的应用
出生时坦克子弹不能穿墙,血量只够挨打1次,
吃了随机出现的道具后血量会够挨打多次,子弹威力也变大,等于加了装饰
首先是创建通用的坦克:
代码片段,双击复制
然后是对这个通用坦克的变身器:
代码片段,双击复制
创建出生时的默认坦克,未加装饰:
代码片段,双击复制
加了装饰的坦克,无敌还能穿墙:
代码片段,双击复制
然后下面就可以使用这个无敌坦克:
代码片段,双击复制
出生时坦克子弹不能穿墙,血量只够挨打1次,
吃了随机出现的道具后血量会够挨打多次,子弹威力也变大,等于加了装饰
首先是创建通用的坦克:
01
02
03
04
05
06
07
08
09
10
11
12
public
abstract
class
Tank
{
public
int
hp;
public
abstract
void
attack();
public
int
beAttacked(
int
i)
{
return
hp -= i *
100
;
};
}
然后是对这个通用坦克的变身器:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
public
abstract
class
BianshenTank
extends
Tank
{
private
Tank tank;
public
BianshenTank(Tank tank)
{
this
.tank = tank;
}
@Override
public
void
attack()
{
tank.attack();
}
@Override
public
int
beAttacked(
int
i)
{
return
tank.beAttacked(i);
}
}
创建出生时的默认坦克,未加装饰:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
public
class
BornTank
extends
Tank
{
public
BornTank()
{
this
.hp =
100
;
}
@Override
public
void
attack()
{
System.out.println(
"bing! beng! ba!"
);
}
@Override
public
int
beAttacked(
int
i)
{
return
hp -= i *
100
;
}
}
加了装饰的坦克,无敌还能穿墙:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
public
class
Wudi
extends
BianshenTank
{
public
Wudi(Tank tank)
{
super
(tank);
hp =
300
;
}
@Override
public
void
attack()
{
super
.attack();
System.out.println(
"haha, i can chuanqiang"
);
}
@Override
public
int
beAttacked(
int
i)
{
System.out.println(
"haha, i am wudi"
);
return
hp;
}
}
然后下面就可以使用这个无敌坦克:
01
02
03
04
Tank t =
new
BornTank();
Wudi w =
new
Wudi(t);
w.attack();
System.out.println(
"my hp is:"
+ w.beAttacked(
200
));
- Decorator装饰器模式Java示例学习
- Decorator装饰器模式Java示例学习
- 设计模式-装饰模式Decorator JAVA示例
- Java装饰器模式(Decorator)
- Java装饰器模式(Decorator)
- java设计模式:装饰器模式[Decorator]
- java设计模式:装饰器模式[Decorator]
- 《设计模式》学习笔记--装饰器Decorator
- JAVA设计模式:装饰器(Decorator)
- 装饰器模式(Decorator) java IO
- Java Decorator Pattern(装饰器模式)
- 装饰器(Decorator)模式
- 装饰器(Decorator)模式
- 装饰器(Decorator)模式
- 装饰器(Decorator)模式
- 装饰器模式(Decorator)
- 装饰器(Decorator)模式
- 装饰器(Decorator)模式
- Android的触摸屏手势事件
- Android ADB Command
- 最新Oracle 和 mysql 的对比参照
- OCP-1Z0-053-V12.02-580题
- 11个程序员幽默代码注释
- Decorator装饰器模式Java示例学习
- ubuntu下安装JRE
- [LeetCode] Combination Sum II
- 全局事务与本地事务的区别应用(从代码方面来探讨的)
- src或者href值为base64编码代码
- C++ primer 课后习题 第五章
- 【Android】Animation之改变自带的Activity切屏效果
- 全局和本地事务(从理论上)
- 黑马程序员 java基础_Socket