我对设计模式非常陌生,并且对流利的界面和Builder模式之间的差异感到困惑。
我了解流畅接口的概念。但是构建器模式有点混乱。我无法理解在Builder模式中对Director的使用。
我可以同时使用Builder模式和Fluent接口吗?如果是这样,那么我应该如何与主任和具体的建设者一起这样做?
我的问题 不是 关于构建器模式的优势。但是这个问题的目的是要了解构建器模式和流畅接口之间的关系。
从GoF用UML序列图为Builder进行编辑:
Fluent接口的想法是,可以通过将多个点与点连接起来而将多个属性应用于对象,而不必每次都重新指定对象。构建器模式背后的想法是,与不共享的不可变对象相比,不共享的可变对象通常更易于使用,但是与共享的可变对象相比,推理共享的不可变对象要容易得多。因此,代码可以使用易于使用的可变对象来生成所需实例的“模型”,然后使用该模型来制作易于共享的不可变对象,以保存相同的数据。
这两个想法可以很好地协同工作,但是有些正交。
请注意,至少有三种方法可以使流畅的界面起作用:
最后一种样式要求采取一些措施来应用所有补丁,但是如果要修改的对象很大并且需要进行许多更改,则可以最大程度地减少所需的复制量。
问题内容: 所述流文档状态双工流 “是同时实现可读写接口流”和变换流 “是双相流其中输出以某种方式从输入计算”。不幸的是,文档没有描述Transplex流在Duplex流之外提供的内容。 两者之间有什么区别吗?您什么时候可以使用另一个? 问题答案: 可以将双工流视为具有可写流的可读流。两者都是独立的,每个都有独立的内部缓冲区。读写事件独立发生。 转换流是双工的,其中读写以因果关系进行。双工流的端点
问题内容: 谁能解释工厂模式与策略模式之间的差异? 对我来说,除了一个额外的工厂类(它们以工厂模式创建产品的对象)外,两者看起来都一样 问题答案: 工厂模式是一种创造模式。战略模式是一种运营模式。换句话说,工厂模式用于创建特定类型的对象。策略模式用于以特定方式执行一个操作(或一组操作)。在经典示例中,工厂可能会创建不同类型的动物:狗,猫,老虎,而策略模式将执行特定的动作,例如,移动;使用“跑步”,
问题内容: 数据访问对象(DAO)和存储库模式之间有什么区别?我正在使用Enterprise Java Beans(EJB3),Hibernate ORM作为基础结构以及域驱动设计(DDD)和测试驱动开发(TDD)作为设计技术来开发应用程序。 问题答案: 是 数据持久性 的抽象。 是 对象集合 的抽象。 会被认为更接近数据库,通常以表为中心。 将被视为更接近域,仅处理汇总根。 可以使用来实现,但您
我试图理解反应流和反应流之间的区别,特别是在RxJava的上下文中? 我所能理解的最多的是,反应流在规范中有一些背压的概念,但在RxJava/Reactive中已经存在了请求(n)接口。 我不介意ELI5的回答。
问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型
问题内容: 今天我收到了这个问题,我想我回答的很不好。我说过流是流动的数据,而阅读器是一种我们从中读取的技术,它是静态数据。我知道这是一个糟糕的答案,因此请通过Java示例为我提供这两者之间的清晰区别和定义。 谢谢。 问题答案: 正如其他人所说,每种情况的用例略有不同(即使它们经常可以互换使用) 由于阅读器用于读取字符,因此当您处理文本性质的输入(或以字符表示的数据)时,它们会更好。我之所以说得更