以不同方式从另一个对象创建一个对象的设计模式
我必须使用对象 Y 的属性(两者都具有相同类型)以 4-5 种不同的方式创建对象 X,即根据情况,Y 的这些属性可以用于以不同的方式初始化 X。一种方法是,使用默认构造函数创建一个对象 X,然后设置其属性,但它有一个缺点,如果发生某些问题,那么我们的对象会处于不一致的状态。另一种方法是为所有带有虚拟参数的情况创建不同的构造函数,这听起来很糟糕。 我可以在这里使用任何好的设计模式吗?
I have to create an object X using properties of object Y (both are of same type) in 4-5 different ways i.e. depending upon situation, those properties of Y can be used to initialize X in different ways. One way to do is , create an object X using default constructor and then set its properties, but it has a disadvantage that if some problem occurs then we have an object in inconsistent state. Another way to do is create different constructors for all the cases with dummy parameters, which sounds really bad.
Is there any good design pattern i can use here ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果两个对象的类型相同,则可以使用工厂方法:
如果类型不同,可以将工厂方法设为静态并传递 Y 作为参数。
If both objects are of the same type, you can use factory methods:
If types are different, you can make factory methods static and pass Y as a parameter.
听起来您可以使用工厂模式的稍微专业化的版本。例如,构建对象的一部分可能是传入现有实例(或实例的接口)来初始化新对象。
Sounds like you could use a slightly-specialized version of the Factory Pattern. E.g. Part of building an object could be to pass in an existing instance (or interface to an instance) to initialize a new object.
可以找到有关工厂模式的详细解释 此处。
Joshua Bloch 在他的书《Effective Java》中也提出了使用静态工厂的一些好处
Nice explanation for Factory Pattern can be found here.
Also Joshua Bloch is his book Effective Java suggests some good advantages of using static factories
这听起来像是抽象工厂模式的例子。
This sounds like a case for the Abstract Factory pattern.
除了工厂模式之外,还可以看看构建器模式。此模式允许客户端配置对象的构造方式。
In addition to Factory Pattern, take a look at the Builder Pattern. This pattern allows the client to configure how an object is constructed.