何时使用策略或外观?

时间:2021-07-26 23:53:01

标签: java design-patterns strategy-pattern

所以我和我的团队正在研究这个房地产项目(学校作业),如果我们使用了误用的策略模式,我们会感到困扰,应该改用 Facade。我正在为数据库的 CRUD 编写代码,我使用策略模式从 jform 调用那些 CRUD 方法(添加、删除、更新)。我们仍在开始学习不同的设计模式,所以如果这是一个正确的实现,我们希望提供帮助。

这是我的策略模式代码

public interface methods {
    public void doOperation(int id, String type, int area, String address, String listingStatus);
}

public class methodUse {
    private methods method;

    public methodUse(methods method) {
        this.method = method;
    }
    
    public void executeMethod(int id, String type, int area, String address, String listingStatus){
         method.doOperation(id, type, area, address, listingStatus);
    }
}

public class methodUpdate implements methods{
    private SystemAdmin systemAdmin = new SystemAdmin();

    @Override
    public void doOperation(int id, String type, int area, String address, String listingStatus) {
        systemAdmin.updatePropertyListing(id, listingStatus);
    
    }
}

public class methodDelete implements methods{
   private SystemAdmin systemAdmin = new SystemAdmin();


    @Override
    public void doOperation(int id, String type, int area, String address, String listingStatus) {
      systemAdmin.deleteListing(id);
    }
}

public class methodAdd implements methods{
    private SystemAdmin systemAdmin = new SystemAdmin();

    @Override
    public void doOperation(int id, String type, int area, String address, String listingStatus) {
        systemAdmin.addListing(id, type, area, address, listingStatus);
    }
    
}

每次单击特定按钮时,都会在 jform 上调用这些类,例如。添加按钮执行策略添加。

我想问大家,我们所做的是否是策略模式的正确实现。

1 个答案:

答案 0 :(得分:2)

问:我什么时候应该使用“策略”模式?

<块引用>

https://refactoring.guru/design-patterns/strategy

当您想使用不同的变体时,请使用策略模式 对象内的算法,并且能够从一种算法切换到 另一个在运行时。

所以在这种情况下,选择“策略”模式并没有“错”

问:[是]我们所做的是对策略模式的正确实现吗?

<块引用>
  • 声明所有算法变体通用的策略接口。

  • 一一将所有算法抽取到自己的类中。他们都应该实现策略接口。

是的,你已经正确地实现了它。

问:那么“门面”呢?

正如约翰·博林格所说:

<块引用>

策略和外观模式不能相互替代。它 一个程序可能同时使用两者是合理的。一般也没有 如何设计程序或哪种设计的单一正确答案 模式可能在其中有用。

相关问题