我有一个我搞不懂的问题。我有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逻辑移到客户端代码中,但是后来我意识到我需要在应用程序代码中的多个地方使用这个逻辑。那我现在能做什么?
发布于 2021-10-23 21:05:00
您可能正在寻找立面图案,它旨在为更复杂的操作提供一个简化的接口。
我在这里有点冒昧地称它为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()应该返回客户机需要操作的值,那么事情可能会变得有点复杂,而且这种模式可能不会带来太多好处。
此外,我忽略了您希望能够单独调用C和D的方法,这在我的建议中仍然是可能的,但是如果您不打算同时使用getConfigs()执行它们,那么我的想法可能不是您想要的。
https://stackoverflow.com/questions/69681809
复制相似问题