1

类层次结构
客户端通过基类(java代码)使用它们:

BaseClass baseObj1 = new DerivedClass("valueofreqdfeature");
//the required feature gets added to the map in the base class
Map<String, Object> features = Collections.singletonMap("requiredFeature1Name","requiredFeatureValue");
BaseClass newBaseObj = baseObj1.createNewConcreteFeature(features);

createNewConcreteFeature只会从地图中获取 requiredFeature 值并返回一个实例。这似乎是一种在派生类中是静态的方法,但是客户端无法使用现有对象创建派生类实例。有没有更优雅的写法?或者这有一些适用的模式吗?

4

2 回答 2

0

你违反了 SOLID 的单一责任原则。功能必须只完成一项工作。其他类如 Builder 或其他东西应该做其他工作 - 构建你的功能。如果您需要基于其他功能构建功能,请使用以下内容:

builder.SetValues("valueofreqdfeature");
IFeature someFeature = builder.CreateFeature();

builder.UseFeature(someFeature);
IFeature newFeature = builder.CreateFeature();

如果需要对它们之间的关系进行一些更改,那么您无需更改数十亿个功能中的代码。您唯一需要更改的地方就是您的构建器类。还可以使用接口

于 2016-01-21T07:33:41.167 回答
0

您可以使用Builder_pattern

仅声明一个CustomerFeatures具有所有强制和可选参数的类。根据需要设置属性。

看看这个 SE 帖子:

将属性传递给工厂方法

于 2016-01-21T04:58:50.017 回答