所以我和我的团队正在研究这个房地产项目(学校作业),如果我们使用了误用的策略模式,我们会感到困扰,应该改用 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 上调用这些类,例如。添加按钮执行策略添加。
我想问大家,我们所做的是否是策略模式的正确实现。
答案 0 :(得分:2)
问:我什么时候应该使用“策略”模式?
<块引用>https://refactoring.guru/design-patterns/strategy
当您想使用不同的变体时,请使用策略模式 对象内的算法,并且能够从一种算法切换到 另一个在运行时。
所以在这种情况下,选择“策略”模式并没有“错”
问:[是]我们所做的是对策略模式的正确实现吗?
<块引用>声明所有算法变体通用的策略接口。
一一将所有算法抽取到自己的类中。他们都应该实现策略接口。
是的,你已经正确地实现了它。
问:那么“门面”呢?
正如约翰·博林格所说:
<块引用>策略和外观模式不能相互替代。它 一个程序可能同时使用两者是合理的。一般也没有 如何设计程序或哪种设计的单一正确答案 模式可能在其中有用。