繁体   English   中英

提供类的方法继承到提供基础数据的类中-怎么称呼它?

[英]Class providing methods inherited into class providing underlying data - How is that called?

我有一个Library ,它在某种抽象数据上定义了一些方法。 然后,将该类继承为实际定义数据的类AB 目的是将Library与不同的基础数据存储模型一起重用。

在Python中:

class Library:
    def meth1(self, ...):
      return ...
    def meth2(self, ...):
      return ...
    def compute_property1(...):
      return ...
    def compute_property2(...):
      return ...

class B(Library):
    property1 = property(lambda s: s.compute_property1()) #plain property
    property1 = property(lambda s: s.compute_property2()) #plain property

class A(Library):
    property1 = my_property_with_fancy_caching_and_compression_and_stuff(....)
    property1 = my_property_with_fancy_caching_and_compression_and_stuff(....)

这种模式是众所周知的设计方法吗? 它有名字吗? Library有推荐的名称吗?

您的示例利用了Python的Multiple继承机制,该方法将方法从仅无数据的抽象类A到一个(或多个)面向数据的哑类B

因为它将数据存储(表示)与功能(方法)分开,所以它非常接近于混合,就像Bruno所说的那样,但是区别在于这种模式通常会带来数据存储功能。 模式上的这种差异使得它不完全是OOP (一个对象应该同时实现两者),却让人联想到“ 面向方面”的范式

如果要在OOP中描述这种机制,我将A类称为具有默认方法接口 这样就可以导入任何方法实现的任何地方,但是没有field 我会称B数据访问对象

注意:如果您打算对多个接口这样做( 例如 ,如果要将meth1()compute_priority_1()meth2()comute_priority_2()彼此分开,并将它们放置在两个单独的接口中),将遵循接口隔离原则

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM