gpt4 book ai didi

design-patterns - 何时在具体类中隐藏继承层次结构?

转载 作者:行者123 更新时间:2023-12-02 00:56:27 24 4
gpt4 key购买 nike

每当我有一个工厂根据一些“低级”类型参数(例如协议(protocol)或外部资源的格式)向用户返回抽象基类实现时,我总是很想将抽象类转换为具有内部“策略工厂”的具体类,以便用户可以将实现类型传递给构造函数并直接使用基类。

我注意到.Net框架选择以这种方式实现Socket(而不是创建DatagramSocket,而是在构造时传递SocketType)。有哪些准则可以决定何时可以将层次结构扁平化为这样的单个具体类?

最佳答案

我认为重点是:“客户应该了解多少底层细节?”。

如果您选择第一个解决方案(抽象基类),您将向客户端类隐藏更多详细信息。这样客户端可以完全忽略低级细节(协议(protocol)、外部资源的格式)。当目标是完全隐藏实现细节和该实现中使用的类型时,我更喜欢这种方法。

否则,如果客户端已经知道低级实现的一些细节(例如客户端知道他将使用的套接字是UDP并且他也想知道那种信息),那么抽象基类方法可以是取而代之的是内部“战略工厂”。

关于design-patterns - 何时在具体类中隐藏继承层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5748429/

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