java - 是否存在一种设计模式,用于创建仅具有一些不同值的原型(prototype)?-LMLPHP
客户端通过基类(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值并返回一个实例。这似乎是在派生类中是静态的方法,但是客户端无法使用现有对象创建派生类实例。有没有更优雅的书写方式?还是有一些适用的模式?

最佳答案

您正在违反SOLID的单一责任原则。功能部件只能完成一项工作。其他类(例如Builder或其他类)应该做其他工作-构建功能。如果您需要基于其他功能构建功能,请使用以下方法:

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

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


这样一来,如果需要对数十亿个功能之间的关系进行某些更改,则无需更改这些功能中的代码。您唯一需要更改的地方是您的构建器类。并且还可以使用界面

07-24 19:36