Tag: 策略模式

DI,Guice和战略模式

假设我有以下基类,Queen和Knight作为它的衍生物。 WeaponBehaviour是一个界面。 根据具体的GameCharacter类型,我无法弄清楚如何使用Guice注入武器。 public abstract class GameCharacter { @Inject protected WeaponBehaviour weapon; public GameCharacter() { } public void fight() { weapon.useWeapon(); } public void setWeapon(WeaponBehaviour weapon) { this.weapon = weapon; } }

用状态/策略模式替换if / else逻辑

我已经阅读过以前的堆栈交换,用Java替换条件逻辑,例如带有状态/策略模式的IF / ELSE,但我不确定我的案例是否适合替换。 以下是我看到的结果 – Java中的if语句的长列表以及将许多’if else’语句转换为更干净的方法 我本质上是在编写一个文件下载管理器,这些是我的IF / ELSE结构: 如果文件及其zip文件存在,则将zip文件移动到zip文件目录并读入文件 如果zip文件存在,则解压缩文件并将zip文件移动到zip文件目录并读入文件 如果zip文件不存在,则从指定的URL下载,然后解压缩并读入文件并将zip文件移动到指定的目录。 如果URL中不存在zip文件,则创建空白文件并将其写入磁盘。 基本上我理解你将这四个条件作为哈希映射中的键,然后值是需要发出的“命令”。 但是我相信你仍然需要一个If / Else来决定在作为输入给出的键上调用什么动作。 所以我没有看到好处。 有人可以解释一下吗?

战略设计模式,generics和类型安全

我想创建以下策略模式与Factory结合,但我希望它是类型安全的。 到目前为止我做了以下事情: public interface Parser { public Collection parse(ResultSet resultSet); } public class AParser implements Parser { @Override public Collection parse(ResultSet resultSet) { //perform parsing, get collection Collection cl = performParsing(resultSet); //local private method return cl; } } public class ParserFactory { public enum ParserType { APARSER } public static Parser createParser(ParserType parserType) { Parser […]

如何有效地实施弹簧战略模式?

我有一个使用Spring框架在Java 1.5中开发的Web应用程序。 应用程序包含“仪表板”,这些页面是简单的页面,其中一组信息被重新分组,用户可以在其中修改某些状态。 管理人员希望我在数据库中为三个仪表板添加日志记录系统。 每个仪表板都有不同的信息,但日志应该按日期和用户的登录进行跟踪。 我想做的是实现类似这样的策略模式: interface DashboardLog { void createLog(String login, Date now); } // Implementation for one dashboard class PrintDashboardLog implements DashboardLog { Integer docId; String status; void createLog(String login, Date now){ // Some code } } class DashboardsManager { DashboardLog logger; String login; Date now; void createLog(){ logger.log(login,now); } } class UpdateDocAction{ […]

修改if-else到策略模式

我在java中有以下if-else分支。 if (str.equals(“a”)) { A;} else if (str.equals(“b”)) { B;} else if (str.equals(“c”)) { C;} else if (str.length == 5) { D;} else { E;} 如何将此代码修改为策略模式?