设计模式来处理子类中的设置?

Jea*_*ves 5 java design-patterns

我有一个小的层次结构,所有类都实现了一个公共接口.

每个具体类都需要接收一个包含例如公共字段的设置结构.问题是设置结构

  • 有一个共同的部分
  • 另一部分从一个具体类到另一个具体不同

我想知道你是否有任何优雅的设计来处理这个问题.我想建立像:

BaseFunc doer = new ConcreteImplementation1();
Run Code Online (Sandbox Code Playgroud)

使用ConcreteImplementation1实现BaseFunc.并有类似的东西

doer.setSettings(settings)
Run Code Online (Sandbox Code Playgroud)

但是''settings''对象具有适合ConcreteImplementation1的具体实现.

你会怎么做?

DwB*_*DwB 2

这可能是一个命名的设计模式,如果是的话,我不知道名字。声明一个实现所需接口的抽象类。抽象类构造函数应该获取设置对象的实例,从中提取全局设置。从抽象类派生一个或多个类。派生类构造函数应该获取设置对象的实例,将其传递给父类构造函数,然后提取任何本地设置。

下面是一个例子:

AbstractThing 类实现 DesiredInterface
{
    私有字符串全局设置值1;
    私有字符串全局设置值2;

    protected AbstractThing(设置设置)
    {
        globalSettingValue1 = settings.getGlobalSettingsValue1();
        globalSettingValue2 = settings.getGlobalSettingsValue2();
    }

    protected String getGlobalSettingValue1()
    {
        返回全局设置值1;
    }

    protected String getGlobalSettingValue2()
    {
        返回全局设置值2;
    }
}

类 DerivedThing 扩展 AbstractThing
{
    私有字符串派生ThingSettingValue1;
    私有字符串派生ThingSettingValue2;

    公共 DerivedThing(设置设置)
    {
        超级(设置);
        派生ThingSettingValue1 = settings.getDerivedThingSettingsValue1();
        派生ThingSettingValue2 = settings.getDerivedThingSettingsValue2();
    }
}