gpt4 book ai didi

oop - 设计问题 : does the Phone dial the PhoneNumber, 还是电话号码在电话上自己拨号?

转载 作者:行者123 更新时间:2023-12-04 04:45:22 25 4
gpt4 key购买 nike

这是从我在 DDD Yahoo! 上发布的内容重新发布的。团体。

在所有条件相同的情况下,你是写 phone.dial(phoneNumber) 还是 phoneNumber.dialOn(phone)?记住 future 可能的要求(除了电话号码之外还有帐号,电话之外还有计算器)。

这个选择倾向于说明信息专家、单一职责原则和告诉不要问的习语是如何相互矛盾的。

phoneNumber.dialOn(phone) 支持信息专家和告诉不要问,而 phone.dial(phoneNumber) 支持单一职责原则。

如果您熟悉 Ken Pugh 在 Prefactoring 中的工作,这是 Spreadsheet Conundrum ;你添加行还是列?

最佳答案

选择是为列对象还是行对象提供拨号方法不会改变程序的缩放方式。

dial 方法本身就是一系列行和列方法。你必须问这些方法依赖什么。

如果行方法的序列不依赖于确切知道涉及哪个列对象(但确实依赖于涉及哪个特定行对象),反之亦然,对于列方法的序列,则问题按 m + n (m = num.rows,n = num.cols)。当您创建一个新行时,如果为列方法分配了“拨号”方法,它实际上并不会为您节省任何工作。您仍然必须在某处指定用于“拨号”的唯一行方法序列!

但是,如果说“拨号”中的列方法序列甚至不依赖于涉及哪个列对象(它们使用列方法的一个“通用”序列),那么问题只会扩展为 m。如果您已将 'dial' 方法分配给列对象实际上并不重要,程序仍然缩放为 m;基本上不需要在添加 1 个列对象时创建新的拨号方法,并且您显然可以选择将所有这些拨号方法本身抽象为一个通用拨号方法。

关于oop - 设计问题 : does the Phone dial the PhoneNumber, 还是电话号码在电话上自己拨号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com