首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计模式-解析4个不同的JSON文件

设计模式-解析4个不同的JSON文件
EN

Stack Overflow用户
提问于 2021-10-22 18:50:35
回答 1查看 284关注 0票数 1

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

4个档案

a、b、c、d

A和B只是要求.

A.getConfigs()

B.getConfigs()

然而,C需要

C.getConfigs()

C.getCase()

D需要

D.getConfigs()

D.getHeader()

当我也希望能够调用C和D的各个方法时,我应该使用什么样的模式/对象?

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

EN

回答 1

Stack Overflow用户

发布于 2021-10-23 21:05:00

您可能正在寻找立面图案,它旨在为更复杂的操作提供一个简化的接口。

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

代码语言:javascript
复制
/* define facade interface */
interface Configurable {
  void configure();
}

/* abstract basic configuration */
abstract class Config 
  implements Configurable
{
  abstract void getConfigs();
  
  void configure() {
    getConfigs();
  }
}
代码语言:javascript
复制
/* 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();
  }
}
代码语言:javascript
复制
/* usage */
class Client
{
  private Config config;
  
  Client(Config config) {
    this.config = config;
  }
  
  void start() {
    config.configure();
    /* do more stuff */
  }
}

但是,如果像您的方法名称所暗示的那样,getConfigs()getCase()getHeader()应该返回客户机需要操作的值,那么事情可能会变得有点复杂,而且这种模式可能不会带来太多好处。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69681809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档