DESIGN PATTERNS -解析4个不同的JSON文件



我有一个问题我不明白。我有4个不同的JSON文件配置。其中一些文件需要额外的API调用,而另一些则不需要。

4文件BCD

A和B只是要求。

A.getConfigs ()

B.getConfigs ()

C需要

C.getConfigs ()

C.getCase ()

D需要

D.getConfigs ()

D.getHeader ()

当我还想为C和D调用单独的方法时,我应该使用什么样的模式/对象?

我可以很容易地将getCase和getHeader逻辑移动到客户端代码中,但后来我意识到我需要在应用程序代码的多个地方使用此逻辑。那我现在该怎么办呢?

您可能正在寻找facade模式,它旨在为更复杂的操作提供简化的接口。

我在这里冒昧地称它为facade,因为它通常涉及包装其他类,而不仅仅是实现一个接口,但我认为它仍然适用。

/* define facade interface */
interface Configurable {
void configure();
}
/* abstract basic configuration */
abstract class Config 
implements Configurable
{
abstract void getConfigs();

void configure() {
getConfigs();
}
}
/* implementations */
class ConfigA
extends Config
{
void getConfigs() {
/* do stuff */
}
}
class ConfigB
extends Config
{
void getConfigs() {
/* do stuff */
}
}
class ConfigC
extends Config
{
void getConfigs() {
/* do stuff */
}

void getCase() {
/* do stuff */
}

/* override configure */
void configure() {
getConfigs();
getCase();
}
}

class ConfigD
extends Config
{
void getConfigs() {
/* do stuff */
}

void getHeader() {
/* do stuff */
}

/* override configure */
void configure() {
getConfigs();
getHeader();
}
}
/* usage */
class Client
{
private Config config;

Client(Config config) {
this.config = config;
}

void start() {
config.configure();
/* do more stuff */
}
}

然而,如果,正如你的方法名称所暗示的那样,getConfigs(),getCase()getHeader()应该返回客户端需要操作的值,那么事情可能会变得有点复杂,也许这种模式不会增加很多好处。


另外,我忽略了您希望能够单独调用CD的方法,这在我的建议下仍然是可能的,但是如果您不打算同时使用getConfigs()执行它们,那么我的想法可能不是您正在寻找的。