设计模式如何在不改变Java中被调用方法的情况下向类添加新功能
我想设计一个可以(或不可以)实现功能的类,并在将来开放添加新的功能。这些功能必须通过方法执行。例如:
class Hero()
doDamage(){
//simpleDamage
}
及
class BetterHero() implements EnableCriticAttack
doDamage(){
//damage with critic attack chance
}
而且
class WizardBetterHero() implements EnableCriticAttack, MagicDamage
doDamage(){
//damage with critic attack chance + magic damage
}
我想使用适当的设计模式添加新的“特殊能力”,这样doDamage()
方法将知道要使用哪些能力,并且它会正确地使用。我不想创建不同的类,只是在创建的类中“添加”新功能:开-关原则
PD:我把功能作为接口,但这只是一个例子
# 1 楼答案
造成损害的不同方式是一种建议使用策略设计模式的行为。例如,有一个
Damage
接口,例如:以及一些实现,例如:
因此,只需要一个
Hero
类型,例如:Damage
的实现也可以使用Decorator设计模式。例如,英雄的伤害可能包括多种造成伤害的方式: