本文转载自微信公众号「码个蛋」,作者陈宇明 。转载本文请联系码个蛋公众号。
代码
抽象基类
- public abstract class 英雄 {
- public abstract int 攻击()
- public abstract int 冷却()
- ........
- }
实现基类
- public class 李白 extends 英雄 {
- @Override
- public int 冷却(){
- return 5;
- }
- ........
- }
Buff 抽象类
- public abstract Buff extends 英雄 {
- public abstract int 攻击()
- public abstract int 冷却()
- ........
- }
不同 Buff 的实现类
- public 红buff extends Buff {
- private 英雄 英雄;
- public 红buff(英雄 英雄){
- this.英雄 = 英雄;
- }
- @Override
- public int 攻击() {
- return 英雄.攻击() + 红buff额外攻击;
- }
- .........
- }
- public 蓝buff extends Buff {
- private 英雄 英雄;
- public 蓝buff(英雄 英雄){
- this.英雄 = 英雄;
- }
- @Override
- public int 冷却() {
- return 英雄.冷却() + 蓝buff额外减少的冷却值;
- }
- .........
- }
客户端
- public class Client {
- public static void main(String[] args) {
- // 没有buff的英雄
- 英雄 无buff李白 = new 李白();
- // 打了红
- 红buff 红buff李白 = new 红buff(无buff李白);
- // 再来个篮
- 篮buff 红蓝buff李白 = new 篮buff(红buff李白);
- }
- }
注意:以上代码块用中文编写类名、变量名是为了让大家更好的理解,在实战过程中记得替换成相对应的英文。
总结
出自《Head first 设计模式》