我有一种三维问题。 可以说你有一个类Item和一个实现相同接口的类Slot。 (我只有两门课,但问题必须扩展到大量课程)。这同样适用于土地和水资源,实现相同的接口(如景观,这并不重要)必须有一个设计模式,但哪一个?
汽车和小船从项目继承和非常接近对方。 与从插槽继承的Parking_slot和Harbor_slot相同。在这里你有两个维度,我可以闻到一个桥梁模式,但不完全。
class Data:
@abstract_method
def do_this():
pass
@abstract_method
def do_that():
pass
class Item(Data):
@abstract_method
def do_this():
pass
@abstract_method
def do_that():
pass
class Slot(Data):
@abstract_method
def do_this():
pass
@abstract_method
def do_that():
pass
class Car(Item):
def do_this():
# actually_do_something
def do_that():
# actually_do_something
class Boat(Item):
def do_this():
# actually_do_something
# close to Car
def do_that():
# actually_do_something
# close to Car
class Parking_slot(Slot):
def do_this():
# actually_do_something
def do_that():
# actually_do_something
class Harbor_slot(Slot):
def do_this():
# actually_do_something
# close to Parking_slot
def do_that():
# actually_do_something
# close to Parking_slot
事情是,它必须与景观数量成比例。
为3D尺寸,我想有与实施状态机,所以我可以有do_that和do_this在每个国家的不同的行为。例如,这些状态可以是数据的存储方式,我们将有一个boat_csv,car_bdd,Parking_slot_cloud等类的集合。
我不希望在每个项目/插槽下具有每个Landscape的继承树,并且每个树叶下面都有一个用于每个数据状态的继承树。
我已阅读设计模式的圣经(http://www.uml.org.cn/c++/pdf/DesignPatterns.pdf)中描述的所有模式,感觉就像他们都不是比赛。你知道任何适用于我的情况的模式吗?
为@Milosz KRAJEWSKI编辑:
为什么不使用桥接模式
我觉得不能应用桥接模式,因为我想在我的对象执行操作的依赖项目/插槽和横向尺寸。所以我不能孤立的项目/槽尺寸相关的操作,并在桥的一侧执行它们并隔离景观维度相关业务,以及在桥上
'foo_A'和'bar_A'之间的关系是什么?什么阻止你使用多重继承,只是......这样做(又或为什么你需要一个设计模式来做些什么?) – sol 2015-03-03 14:53:09
在代码方面没有任何关系。但是如果我添加一个foo_C,我还会添加一个bar_C。除此之外,不分享代码。 – Borbag 2015-03-03 14:57:41
我不需要设计模式,我需要的是有一个可扩展的体系结构。 – Borbag 2015-03-03 15:04:31