gpt4 book ai didi

java - 是否有一种设计模式可以创建只有一些值不同的原型(prototype)?

转载 作者:太空宇宙 更新时间:2023-11-04 13:01:16 25 4
gpt4 key购买 nike

Class heirarchy
客户端通过基类(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 将从 map 中仅获取 requiredFeature 值并返回一个实例。这似乎是派生类中静态的方法,但客户端无法使用现有对象创建派生类实例。有没有更优雅的写法?或者这有一些适用的模式吗?

最佳答案

您违反了 SOLID 的单一职责原则。功能必须只完成一项工作。其他类(例如 Builder 或其他类)应该执行其他工作 - 构建您的功能。如果您需要基于其他功能构建功能,请使用如下内容:

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

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

采用这种方式,如果需要对数十亿个功能之间的关系进行一些更改,则无需更改它们中的代码。您唯一需要更改的地方是您的构建器类。并且还可以使用接口(interface)

关于java - 是否有一种设计模式可以创建只有一些值不同的原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34915612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com