【问题标题】:What is the difference between Builder Pattern with static inner class and Builder design patterns with One Abstract and one+ concrete implimentations具有静态内部类的构建器模式与具有一个抽象和一个+具体实现的构建器设计模式有什么区别
【发布时间】:2021-12-29 10:15:51
【问题描述】:

我正在学习构建器设计模式,我发现了两个相同的解释。

  1. 带有一个静态的内部构建器类,可以适当地返回外部类的对象。
  2. 使用一个 Builder 抽象类,然后有多个相同的实现和一个导向器类。

我完全不知道它是哪一个?还是两者兼有?

【问题讨论】:

  • 两者都合适。区别在于1,其他类将无法访问此concreateBuilder类,而2其他类仍然可以访问它。如果您只有一个类从 Builder 扩展,则 1 是一个不错的选择。但是当您有几个类扩展它时,您将 concreateBuilder 视为静态内部构建器类会令人困惑。
  • @user9594794 公平点!但是我们也可以在 Builder 模式的案例 1 中同时使用两种类型的构建器(案例 2),使用设置器/方法(并且可以选择不设置某些属性),不是吗?这样做有什么缺点?
  • 看看wiki

标签: java oop design-patterns builder


【解决方案1】:

它既是……又是更多。有许多源自不同来源的模式,它们都被称为“构建器”。这并不像您想象的那么不寻常。例如,有许多不同的模式都被称为“工厂”。

关于你提到的两个。

  1. Josh Bloch 在他的书Effective Java中推广了静态内部构建器。
  2. GoF 在其开创性的设计模式一书中推广了抽象多态构建器。

还有来自其他来源的更有用的构建器模式。请参阅:Builder isomorphisms

【讨论】:

  • 非常真实!我只在 Josh Bloch 博客上阅读了静态内部构建器。谢谢你这个有见地的回答。
猜你喜欢
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2013-08-27
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多