Java DI、Guice与战略模式
假设我有以下基类,Queen和Knight作为它的派生。武器行为是一个界面。我不知道如何根据具体的游戏角色类型使用Guice注入武器Java DI、Guice与战略模式,java,dependency-injection,guice,strategy-pattern,Java,Dependency Injection,Guice,Strategy Pattern,假设我有以下基类,Queen和Knight作为它的派生。武器行为是一个界面。我不知道如何根据具体的游戏角色类型使用Guice注入武器 public abstract class GameCharacter { @Inject protected WeaponBehaviour weapon; public GameCharacter() { } public void fight() { weapon.useWeapon();
public abstract class GameCharacter {
@Inject
protected WeaponBehaviour weapon;
public GameCharacter() {
}
public void fight() {
weapon.useWeapon();
}
public void setWeapon(WeaponBehaviour weapon) {
this.weapon = weapon;
}
}
你可以用
一个子类:
class GimliSonOfGloin extends GameCharacter {
@Inject
public void setWeapon(@Axe WeaponBehaviour weapon) {
super.setWeapon(weapon);
}
}
注释:
@BindingAnnotation
@Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface Axe {}
约束力:
bind(WeaponBehaviour.class)
.annotatedWith(Axe.class)
.to(MyAxe.class);
你可以用
一个子类:
class GimliSonOfGloin extends GameCharacter {
@Inject
public void setWeapon(@Axe WeaponBehaviour weapon) {
super.setWeapon(weapon);
}
}
注释:
@BindingAnnotation
@Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface Axe {}
约束力:
bind(WeaponBehaviour.class)
.annotatedWith(Axe.class)
.to(MyAxe.class);
每个角色类型是否只有一种使用的武器类型?应在实例化时注入配置的默认武器类型,但是它也可以在运行时通过基类的setter进行更改。每个角色类型是否只有一种它使用的武器类型?配置的默认武器类型应该在实例化时注入,但也可以在运行时通过基类的setter进行更改。