こんにちは皆さん、私はインターフェイスをどこに保持する必要があるかについて頭を悩ませようとしています。
例 :
私が取り組んでいる 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
また
製品の概要を説明するインターフェイスが 1 つあります (Model_Product_Interface)
Model_Order_Item 内にメソッド setProduct(Model_Product_Interface $product) がある場合がありますが、これは注文が「名前空間」の外にあるインターフェースを必要とすることを意味します。(しかし!代わりに、製品は「名前空間」の外側を見て、適合する必要があるすべてのインターフェースを取得します)
これらのインターフェイスをどこに配置すればよいか 100% 確信が持てません
ドメインの観点から見ると、注文、製品、倉庫、顧客の 4 つのグループに分かれています。「モジュール」/グループ内で設計されたインターフェースを持つことは、それに直接関連するため、より優れています........
私の心は、この主題についてループすることができます. 個人的な好みの方が多いと思いますか?
補足として、シングルトン サービスロケーターを使用して各グループ専用のサービスを返し、ファクトリとデータ アクセス オブジェクトを (他のサービス関連のメソッドと共に) 返す予定です。
zendのブートストラップにある私の考えは、依存関係の注入をすべてそこで行うので、1か所にまとめました。
アドバイスをいただければ幸いです。