装饰器模式
装饰器模式是一种结构型模式,它动态地给一个对象添加一些额外的职责,而不需要修改这个对象的类。装饰器模式可以将对象的功能进行组合,使得对象具有更加灵活的功能扩展能力。在游戏开发中,装饰器模式常用于实现技能系统、道具系统等。
例如,在一个冒险游戏中,玩家可以装备武器来增强攻击力,可以使用装饰器模式来实现武器系统:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public abstract class Weapon {
public abstract float GetDamage();
}
public class Sword : Weapon {
public override float GetDamage() {
return 10;
}
}
public abstract class WeaponDecorator : Weapon {
protected Weapon weapon;
public WeaponDecorator(Weapon weapon) {
this.weapon = weapon;
}
}
public class FireWeapon : WeaponDecorator {
public FireWeapon(Weapon weapon) : base(weapon) {
}
public override float GetDamage() {
return weapon.GetDamage() + 5;
}
}
public class IceWeapon : WeaponDecorator {
public IceWeapon(Weapon weapon) : base(weapon) {
}
public override float GetDamage() {
return weapon.GetDamage() + 3;
}
}
// 调用代码
Weapon sword = new Sword();
Weapon fireSword = new FireWeapon(sword);
Weapon iceFireSword = new IceWeapon(fireSword);
float damage = iceFireSword.GetDamage();
下面是一些高级用法
本文由作者按照 CC BY 4.0 进行授权