【发布时间】:2023-03-06 11:01:01
【问题描述】:
大家好,我正在努力思考应该保留接口的位置。
一个例子:
我有一个我一直在研究的 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 的引导程序中,我会在那里完成我所有的依赖注入,所以我把它放在一个地方。
感谢您给我的任何建议。
【问题讨论】:
-
你的问题似乎表明你对接口和类的使用没有完全了解。
Model_Order_Item_Product_Interface是什么样的?也许以其中一个界面为例,我们可以为您提供更多帮助。
标签: php zend-framework interface model