相关疑难解决方法(0)

你什么时候使用Builder模式?

什么是一些常见的,现实世界的例子使用Builder模式的?它给你带来了什么?为什么不使用工厂模式?

java design-patterns builder

512
推荐指数
11
解决办法
22万
查看次数

设计模式:工厂与工厂方法与抽象工厂

我正在从网站上阅读设计模式

在那里我读到了有关工厂,工厂方法和抽象工厂的信息,但它们很混乱,我对定义并不清楚.根据定义

Factory - 创建对象而不将实例化逻辑暴露给客户端,并通过公共接口引用新创建的对象.是Factory Method的简化版本

工厂方法 - 定义用于创建对象的接口,但让子类决定实例化哪个类,并通过公共接口引用新创建的对象.

抽象工厂 - 提供用于创建相关对象族的界面,而无需明确指定其类.

我还查看了关于抽象工厂与工厂方法的其他stackoverflow线程,但是那里绘制的UML图使我的理解更加糟糕.

有谁能告诉我

  1. 这三种模式如何相互不同?
  2. 什么时候用哪个?
  3. 如果可能的话,任何与这些模式相关的java示例?

java language-agnostic design-patterns factory factory-method

164
推荐指数
6
解决办法
8万
查看次数

在DDD中放置全局规则验证的位置

我是DDD的新手,我正试图在现实生活中应用它.没有关于这种验证逻辑的问题,如空检查,空字符串检查等 - 直接进入实体构造函数/属性.但是在哪里验证一些全局规则,如"唯一用户名"?

所以,我们有实体用户

public class User : IAggregateRoot
{
   private string _name;

   public string Name
   {
      get { return _name; }
      set { _name = value; }
   }

   // other data and behavior
}
Run Code Online (Sandbox Code Playgroud)

和用户存储库

public interface IUserRepository : IRepository<User>
{
   User FindByName(string name);
}
Run Code Online (Sandbox Code Playgroud)

选项包括:

  1. 将存储库注入实体
  2. 将存储库注入工厂
  3. 在域服务上创建操作
  4. ???

每个选项更详细:

1.将存储库注入实体

我可以在实体构造函数/属性中查询存储库.但我认为在实体中保持对存储库的引用是一种难闻的气味.

public User(IUserRepository repository)
{
    _repository = repository;
}

public string Name
{
    get { return _name; }
    set 
    {
       if (_repository.FindByName(value) != null)
          throw new UserAlreadyExistsException(); …
Run Code Online (Sandbox Code Playgroud)

c# java domain-driven-design

62
推荐指数
3
解决办法
2万
查看次数

java.io中使用最多的模式是什么?

最近我在求职面试时被问到这个问题,我无法回答.那么,java.io中最常用的模式是什么?它是如何使用的?常见的Java库中使用的其他模式有哪些?

java io design-patterns

30
推荐指数
3
解决办法
2万
查看次数

抽象工厂和建筑商之间的区别?

很抱歉再次询问.我在网上搜索但是无法理解因此我必须放在这里.这就是我自己研究的内容.我从头部设计模式研究.

抽象工厂模式:

根据我研究的差异,建筑师有些人感觉它是一个工厂,但它只创造了一种类型,大部分时间.
所以我可以说上面的图像中的NYStore是构建器,因为它将比萨对象返回给客户端?我对么?请根据以上示例给出您的答案,这可能有助于我学习它.

design-patterns builder abstract-factory

4
推荐指数
1
解决办法
1万
查看次数

Builder模式是否替换工厂模式?

我知道很多次都会问这个问题,但我只是想澄清一下这个问题.构建器模式可以替换工厂模式.

是构建器模式逐步创建并返回复杂对象,这也可以在工厂模式中完成.

design-patterns builder-pattern

1
推荐指数
1
解决办法
948
查看次数

构建器与工厂方法模式

我正在阅读有关构建器模式的内容,并且像往常一样我对工厂模式感到困惑。

我看过一篇很好的文章,它展示了抽象工厂和构建器模式之间的区别。

http://champika-nirosh.blogspot.in/2008/04/what-is-difference- Between-abstract.html

但我的困惑是,除了类似于抽象工厂的构建器模式之外,我觉得它还类似于工厂方法模式。不确定我的理解是否正确。但在工厂方法中,我们也使用一个单独的工厂(具体工厂中的方法)来创建一个特定的对象(而不是一系列产品)。在这种情况下,构建器与工厂方法模式有何不同。我知道 Builder 需要更多步骤来创建对象,除此之外,是否有任何特定场景需要我们使用一个而不是另一个?请指导我。

谢谢。

factory-method builder-pattern

1
推荐指数
1
解决办法
5992
查看次数