|
|
1
13
除了少数提供相同方法但不相关或不实现公共接口(例如
编辑 不管我自己发现结构类型有多不实用 但是,使用它来处理匿名类。例如:
由(隐式)产生的对象
|
|
|
2
3
结构类型是Scala中非常酷的构造。我使用它们来表示多个不相关的类型,这些类型共享一个属性,我希望在没有新抽象级别的情况下对其执行公共操作。
我从那些对应用程序架构要求严格的人那里听到了一个反对结构类型的论点。他们觉得在没有关联特征或父类型的类型之间应用一个公共操作是危险的,因为然后你就把方法应该应用于哪种类型的规则留给了开放式的。丹尼尔的
|
|
3
2
我认为结构类型是这些特性中的一个,您不需要经常使用,但是 什么时候 [编辑] 当然,隐式通常是一种方法,但也有一些情况是你做不到的:假设你有一个可以用方法修改的可变对象,但是它隐藏了状态的重要部分,一种“黑盒”。那你就得设法处理这个东西。 结构类型的另一个用例是当代码依赖于没有公共接口的命名约定时,例如在机器生成的代码中。在JDK中,我们也可以找到类似的东西,比如StringBuffer/StringBuilder对(其中公共接口Appendable和CharSequence是 方式 对将军)。 |
|
|
4
1
结构类型为静态链接语言提供了一些动态语言的好处,特别是松耦合。如果你想要一个方法
很好,因为你可以
Adapter 模式,因为它提供以下优点:
与适配器相比,结构类型的唯一缺点是结构类型不能用于转换方法签名。因此,当签名不匹配时,必须使用具有某些转换逻辑的适配器。我特别不喜欢对“智能”适配器进行编码,因为在很多时候,它们不仅仅是适配器,并导致复杂性的增加。如果类客户机需要一些额外的方法,我更喜欢简单地添加这样的方法,因为它通常不会影响内存占用。 |