下面的场景要遵循的设计模式

时间:2014-06-10 09:45:31

标签: c# .net oop design-patterns

我有三种不同类型的设置(每个设置对应一个类)。考虑一下,我们知道必须遵循的设置(比如说 1,2和3 )。现在,每个设置都需要不同的设置。

  1. 假设我们有 SettingB,SettingC,SettingD ,除了 SettingA 之外,这三种设置都是通用的。所以,我所做的是,我有一个通用接口设置所有设置类型(A,B和C)。

    interface IConfigureSettings
    {
      void ConfigureSettings();
    }
    

    每种设置类型都只会公开此方法,以便为每次设置进行配置。

  2. 在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.
      }
    } 
    
  3. 在这些子设置中, SubSettingsAA和SubSettingsAB可能有2种不同的配置(例如 configurationA(),ConfigurationB())。 ConfigurationA()不在SubSettingsA中。 SubSettingsAB类包含ConfiugrationA()和ConfigurationB()。

    class SubSettingsAA :  SettingA
    {
      ConfigurationB();
    }
    
    class SubSettingsAB :  SettingA
    {
      ConfigurationA();
      ConfigurationB();
    }
    
    class SubSettingAC : SettingA
    {
      ConfigurationC();
      ConfigurationD();
    }
    
  4. 现在,在Setup1的情况下,只有ConfigurationA()可见,而在setup2和setup3的情况下,一切都要配置。 SubSettingAC中的配置()将针对所有三种设置进行配置。

    所以,这就是我所拥有的。现在,我想要的只是为SettingA调用ConfigureSettings(),它应该根据安装类型配置所有内容。考虑一下,安装类型可用。

1 个答案:

答案 0 :(得分:0)

  

Patterns   不是程序设计的灵丹妙药。它们不能取代传统的   面向对象的分析技术,如CRC卡或用例   造型。要使用架构类比,可以通过分析来确定   你的房子需要200安培的电力。模式让你   确定如何安装接线。模式确实有助于你思考   关于您在设计系统时可能遇到的问题。   因此,基于模式的通用解决方案通常比更强大   一个人为解决特定问题而设计的解决方案。   鉴于常用的设计模式的数量(以及许多   它几乎每天都被发明和发现)它有时可能是   很难选择适合您需求的模式。你要做的第一件事   应该决定问题是否从根本上创造,   结构或行为。当然,有些问题有各方面的问题   两个甚至三个,可能需要你混合和匹配模式。

来自gofpatterns

但是,我说我认为你问题的第一部分似乎是创造性的,而Builder模式似乎是最接近的匹配。我会使用组合(通过接口)根据子设置设置配置。此外,配置A和子设置类似乎是配置和子集类的基类。