【发布时间】:2019-04-19 09:40:35
【问题描述】:
我有一个服务可以处理不同的客户端类型。有许多服务类在处理不同客户端的方式上存在细微差别。在大多数情况下,这些类包含所有客户端通用的逻辑,但是有些地方具有特定于客户端的逻辑。
我知道我可以使用工厂返回一组对象用于特定于客户端的逻辑,或者使用模板方法为不同的客户端提供抽象类的具体实现——这些方法的问题是有很多在整个代码中必须基于客户端做出的微小分支决策,这些微小的分支决策是微不足道的,彼此无关,并且它们不保证单独的类。是否有一种设计模式可以优雅地实现这一点?
class Service {
void process() {
//....
if (client1) doStuff1();
if (client2) doStuff2();
//....
if (client1) name = "xyz";
else if (client2) name = "abc";
//....
if (client1) sortasc();
else sortdesc();
//....
if (client2) processx();
else if (client3) processy();
}
}
【问题讨论】:
-
复合设计模式怎么样? en.m.wikipedia.org/wiki/Composite_pattern
-
在 OOP 中,几乎任何东西都需要单独的类。如果它是一个业务规则,那就让它成为一个类。不要犹豫,创建更多课程。
标签: algorithm oop design-patterns