如何解决我如何避免在此设计中使用“神级”反模式
我认为我设计的应用程序将所有逻辑集中在一个类(A)中。我一直在读,这样做不是一个好习惯。 A类有很多嵌套的逻辑,Solve()的每个方法都使用前一个方法的结果作为输入。我不知道是否应该为DoTask1,DoTask2,DoTask3和DoTask4创建单独的类,并从Solve()实例化它们。会更好吗?我知道我也可以使用静态方法创建单独的类,但是我已经读到太多的静态方法是不好的。
Main()
{
A a = new A()
a.Solve()
}
A()
{
Solve()
{
partialresult1 = DoTask1()
partialresult2 = DoTask2(partialresult1)
partialresult3 = DoTask3(partialresult2)
finalresult = DoTask4(partialresult3)
}
DoTask1(){}
DoTask2(){}
DoTask3()
{
B b = new B()
b.doWathever()
}
DoTask4(){}
}
B()
{
doWhatever(){}
}
解决方法
没有全部问题很难知道,但我会猜测并提出建议。
您有不同的有效负载,并且您希望基于它们来应用不同的任务。
首先,我将创建ITask接口:
public interface ITask {
Result DoWork(PartialResult res);
}
现在,您可以创建可以完成部分工作的任务类。客户端可以创建列表并相应执行。
public Task1: ITask {
public Result DoWork(PartialResult res) {
// some work here
}
}
现在,您可以使用AbstractFactory设计模式。每个抽象工厂实现都将创建特定作业所需的任务列表。客户端可以使用它们来执行有效负载。
这两种解决方案可能会使您的超类过时
有关AbstractFactory设计模式的更多信息,请检查:https://refactoring.guru/design-patterns/abstract-factory
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。