库存的外观设计模式

时间:2011-03-04 21:06:14

标签: design-patterns

我想知道是否有人可以举例说明我如何在库存系统中使用外观模式。我的库存是咖啡,袋子和披萨

我确实写了一个状态类来检查订单和交货..

我不是要求别人编写代码我只需要一些简单的类来实现任何实现。

我只是想订购库存,检查库存是否低,检查库存,添加,删除,库存......

在库存中使用外观听起来合理吗?

productFacade Interface class

inventory class
bagel class implements inventory(adding,deleting, stock on hand)
pizza class implement inventory
coffee class implements inventory

将门面图案与订单一起使用是否合理?

orderfacade

order class(create order)
address class(for delivery of pizza, bagel,etc)
orderline
basket item

我正在尝试将外观模式强制进入我的程序。 我的程序已经使用抽象工厂来创建披萨。咖啡和百吉饼调味品的装饰。

2 个答案:

答案 0 :(得分:6)

Facade的主要目的是将一个复杂的子系统或一组对象/接口包装成一个更简单的子系统。基本上,它将客户端与需要知道太多实现细节和/或所有必需的依赖关系分离,然后将工作委托给客户端的子系统。如果子系统本身的某些部分太复杂,外墙甚至可以包裹其他外墙。

正如亚历克斯所说,思考问题的好方法是假装你是客户。你去商店订一个百吉饼和一杯咖啡。就你而言,你应该只要求服务员(门面)给你一个大的双人和一个带有香草和大蒜奶油奶酪的百吉饼。然后,服务员将处理细节,例如制作咖啡,倒咖啡,烤百吉饼和撒上奶油奶酪。您也可以将烤面包机视为门面。服务员只关心将百吉饼放入并向下推动滑块。他不需要知道烤面包机如何转换电流以加热线圈并烤面包圈。

因此,将您的排序逻辑分解为有用的步骤,然后封装客户端不应该知道Facade可以为客户端做什么(或委托给其他人)的实现细节。

希望有所帮助。我正在出门,所以我没有时间进行代码示例。也许今晚晚些时候如果这个问题还没有得到好的答案。

答案 1 :(得分:1)

想想你(客户)需要做些什么才能喝杯咖啡。在你的门面,你会有像

这样的东西
+ Coffee order (Size size) 

在内部你会有像

这样的东西
order (Size size)
{
   grindBeans (size)
   installFilter ()
   getCup...
etc, etc
   return coffee
}

通常,Facade简化了与对象的交互。