首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于以不同方式从另一个对象创建对象的设计模式

用于以不同方式从另一个对象创建对象的设计模式
EN

Stack Overflow用户
提问于 2011-05-11 01:49:13
回答 5查看 8K关注 0票数 4

我必须以4-5种不同的方式使用对象Y的属性(两者都属于同一类型)创建一个对象X,也就是说,根据不同的情况,Y的这些属性可以用不同的方式初始化X。一种方法是,使用默认构造函数创建一个对象X,然后设置它的属性,但它有一个缺点,即如果出现问题,我们就会有一个处于不一致状态的对象。另一种方法是使用伪参数为所有情况创建不同的构造函数,这听起来很糟糕。这里有什么好的设计模式可以使用吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-11 01:57:17

如果这两个对象的类型相同,则可以使用工厂方法:

代码语言:javascript
复制
public class Foo {
    ...
    public Foo withBar(...) {
        Foo f = new Foo(this.param);
        f.setBar(...);
        return f;
    }

    public Foo withBaz(...) {
        Foo f = new Foo(this.param);
        f.setBaz(...);
        return f;
    }
}
...
Foo y = ...;
Foo x = y.withBar(...);

如果类型不同,您可以使工厂方法成为静态方法,并将Y作为参数传递。

票数 6
EN

Stack Overflow用户

发布于 2011-05-11 01:55:14

听起来您可以使用稍微专门化的Factory Pattern版本。例如,构建对象的一部分可能是传入现有实例(或到实例的接口)以初始化新对象。

票数 3
EN

Stack Overflow用户

发布于 2011-09-04 22:51:11

工厂模式的很好的解释可以在here找到。

Joshua Bloch也是他的书Effective建议使用静态工厂的一些好的优点

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5954192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档