我有用Python编写的测试代码,使用类。在
测试环境有两种类型的主机—应用程序运行的主机和运行存储组件的存储主机。在
我有两个类,每个类代表主机类型:
class AppHost_Class(object):
def __init_(self, ip_address):
# etc.
# This method handles interfacing with the application
def application_service(self):
# This method handles the virtual storage component
def virtual_storage(self):
# This method handles caching
def cache_handling(self):
class Storage_Server_Class(object):
def __init_(self, ip_address):
# This method handles interfacing with the storage process
def storage_handling(self):
# This method handles interfacing with the disk handling processes
def disk_handling(self):
问题是拓扑结构可能会改变。在
拓扑图1是: -应用程序主机运行 *应用程序流程 *虚拟存储进程 *缓存进程
我当前的测试代码处理拓扑1
但是,我们还希望支持另一种拓扑(拓扑#2)
应用程序主机运行
存储主机运行
如何重构这些类,以便对于拓扑1,类和它的方法是相同的,但是对于拓扑2,Storage_Server_Class
从{
我在想办一个这样的儿童班:
^{pr2}$但我不想这样做,因为我不想applcation_service
方法对Both_Class
可用。在
有没有办法把AppHost_Class
中的几个方法映射到Storage_Server_Class
?在
将方法分成三个类,然后根据需要组合。在
另一个选择是用它们始终包含的方法定义这两个类
^{pr2}$。。。定义要混合和匹配的方法
。。。并有条件地将方法添加到类中
您可能希望在父类/基类中定义额外的方法,但是除非应用了拓扑应用
我觉得你想要三个基类。一个用于
App
内容,一个用于VirtualStorage
(和缓存)内容,一个用于Storage
(和磁盘)内容。然后,您可以为两个拓扑创建子类,将所需的方法混合在一起。在对于拓扑1,您有一个既继承了
App
和VirtualStorage
基类的类(并且未经修改地使用Storage
基类)。对于拓扑2,创建一个继承VirtualStorage
和Storage
基类的类,并未经修改地使用App
基类。在示例代码:
您可能不需要直接在不同拓扑中使用的基类的别名,我只是添加了这些名称以使其看起来更漂亮。在
下面是一个类B的示例,它只共享在类a中定义的一个方法:
相关问题 更多 >
编程相关推荐