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的具体实现.
你会怎么做?
这可能是一个命名的设计模式,如果是的话,我不知道名字。声明一个实现所需接口的抽象类。抽象类构造函数应该获取设置对象的实例,从中提取全局设置。从抽象类派生一个或多个类。派生类构造函数应该获取设置对象的实例,将其传递给父类构造函数,然后提取任何本地设置。
下面是一个例子:
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();
}
}