浩晨众云网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本文转载自微信公众号「码个蛋」,作者陈宇明 。转载本文请联系码个蛋公众号。

代码
抽象基类
- 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 设计模式》