嗨,伙计们,我正在努力思考应该保留接口的位置。
一个例子 :
我有一个我一直在研究的 zend mvc 多模块应用程序,并想清理它(它真的很乱)
模型对象包括但不限于:
Model_Order
Model_Order_Item
Model_Order_Item_Location
Model_Product
Model_Customer
Model_Warehouse
Model_Warehouse_Location
Model_Warehouse_Location_Position
dependencies include:
Model_Order : Model_Order_Item ( 1 order to many items ), Model_Customer ( many orders to one customer )
Model_Order_Item : Model_Product ( 1 item has 1 product )
Model_Product : Model_Warehouse_Location_Position ( a product could have many positions ), Model_Customer ( one to one relationship )
Model_Warehouse : Model_Warehouse_Location ( one warehouse could have many locations ( or bins ) and different types )
Model_Warehouse_Location : Model_Warehouse_Location_Position ( one location many product positions )
many of these are dependencies that traverse in both directions.
所以我的问题如下。
当涉及到接口时,以下哪项是合适的?
Model_Order_Item_Product_Interface
Model_warehouse_Location_Position_Product_Interface
Model_Order_Item 内部可能是一个方法 setProduct(Model_Order_Item_Product_Interface $product)
Model_warehouse_Location_Position 里面可能是一个方法 setProduct(Model_warehouse_Location_Position_Product_Interface $product)
那么模型对象将是
Model_Product implements Model_Order_Item_Product_Interface, Model_warehouse_Location_Position_Product_Interface
或者
我有一个概述产品的界面(Model_Product_Interface)
并且在 Model_Order_Item 内部可能是方法 setProduct(Model_Product_Interface $product) 但这意味着订单需要在其“命名空间”之外的接口。(但是!相反,现在产品正在寻找其“命名空间”之外的所有接口以获取它必须适应的所有接口)
我不是 100% 确定把这些接口放在哪里
从领域的角度来看,将其视为 4 个独立的组订单、产品、仓库和客户。在“模块”/组中设计接口会更好,因为它与此直接相关......
我的思想可以在这个主题上循环。我猜它更多的是个人喜好?
在旁注中,我还打算使用单例服务定位器来返回专用于每个组的服务,并将返回工厂和数据访问对象(以及其他与服务相关的方法)
我的想法是在 zend 的引导程序中,我会在那里进行所有的依赖注入,所以我把它放在一个地方。
我很感激你能给我的任何建议。