文章

装饰器模式

装饰器模式是一种结构型模式,它动态地给一个对象添加一些额外的职责,而不需要修改这个对象的类。装饰器模式可以将对象的功能进行组合,使得对象具有更加灵活的功能扩展能力。在游戏开发中,装饰器模式常用于实现技能系统、道具系统等。

例如,在一个冒险游戏中,玩家可以装备武器来增强攻击力,可以使用装饰器模式来实现武器系统:

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 进行授权