我有三种不同类型的设置(每个设置对应一个类)。考虑一下,我们知道必须遵循的设置(比如说 1,2和3 )。现在,每个设置都需要不同的设置。
假设我们有 SettingB,SettingC,SettingD ,除了 SettingA 之外,这三种设置都是通用的。所以,我所做的是,我有一个通用接口设置所有设置类型(A,B和C)。
interface IConfigureSettings
{
void ConfigureSettings();
}
每种设置类型都只会公开此方法,以便为每次设置进行配置。
在SettingA中,我们有子设置( SubSettingsAA,SubSettingsAB,SubSettingsAC )。
所以为此,我有一个AbstractA的抽象类,它由SubSettingAA,SubSettingAB,SubSettingAC继承。
abstract class SettingA : IConfigureSettings
{
List<SettingA> _subSettings;
public void ConfigureSettings()
{
//Should Perform configuration for the given site. This is what I need.
}
}
在这些子设置中, SubSettingsAA和SubSettingsAB可能有2种不同的配置(例如 configurationA(),ConfigurationB())。 ConfigurationA()不在SubSettingsA中。 SubSettingsAB类包含ConfiugrationA()和ConfigurationB()。
class SubSettingsAA : SettingA
{
ConfigurationB();
}
class SubSettingsAB : SettingA
{
ConfigurationA();
ConfigurationB();
}
class SubSettingAC : SettingA
{
ConfigurationC();
ConfigurationD();
}
现在,在Setup1的情况下,只有ConfigurationA()可见,而在setup2和setup3的情况下,一切都要配置。 SubSettingAC中的配置()将针对所有三种设置进行配置。
所以,这就是我所拥有的。现在,我想要的只是为SettingA调用ConfigureSettings(),它应该根据安装类型配置所有内容。考虑一下,安装类型可用。
答案 0 :(得分:0)
Patterns 不是程序设计的灵丹妙药。它们不能取代传统的 面向对象的分析技术,如CRC卡或用例 造型。要使用架构类比,可以通过分析来确定 你的房子需要200安培的电力。模式让你 确定如何安装接线。模式确实有助于你思考 关于您在设计系统时可能遇到的问题。 因此,基于模式的通用解决方案通常比更强大 一个人为解决特定问题而设计的解决方案。 鉴于常用的设计模式的数量(以及许多 它几乎每天都被发明和发现)它有时可能是 很难选择适合您需求的模式。你要做的第一件事 应该决定问题是否从根本上创造, 结构或行为。当然,有些问题有各方面的问题 两个甚至三个,可能需要你混合和匹配模式。
但是,我说我认为你问题的第一部分似乎是创造性的,而Builder模式似乎是最接近的匹配。我会使用组合(通过接口)根据子设置设置配置。此外,配置A和子设置类似乎是配置和子集类的基类。