【问题标题】:Facade design pattern for inventory库存的立面设计模式
【发布时间】:2011-03-04 21:06:13
【问题描述】:

我想知道是否有人可以给我一个示例,说明如何在库存系统中使用外观模式。我的库存是咖啡、面包圈和比萨饼

我确实编写了一个用于检查订单和交货的状态类..

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

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

在库存中使用外观是否合理?

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

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

【问题讨论】:

  • 标记javac++ 并询问有关设计模式的问题只是卑鄙的。 :(
  • Fascade 模式只是一个子系统。所以想象一下你是一个想要使用你的程序的局外人。应该为他们提供哪些功能,以便他们可以使用您的实现,而无需知道它是如何工作的。
  • 只是不要根据他们使用的模式来命名你的类。有一天,您可能会更改一些实现细节(可能还有它正在使用的设计模式)。如果发生这种情况,您现在有一个不再反映该类正在做什么的类名。

标签: design-patterns


【解决方案1】:

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

正如亚历克斯所说,思考问题的好方法是假装你是客户。你去商店点了一个百吉饼和一杯咖啡。就你而言,你只需要让服务员(门面)给你一个大双人床和一个百吉饼,里面有香草和大蒜奶油芝士。然后服务员会处理细节,例如制作咖啡、倒咖啡、烤面包圈和涂抹奶油奶酪。您也可以将烤面包机视为立面。服务员只关心把百吉饼放进去,然后把滑块往下推。他不需要知道烤面包机如何转换电流来加热线圈和烤面包圈。

因此,将您的排序逻辑分解为有用的步骤,然后封装客户不需要知道外观可以为客户做的(或委托给其他事情)的实现细节。

希望对您有所帮助。我正在出门,所以我没有时间看代码示例。如果问题还没有很好的答案,也许今晚晚些时候。

【讨论】:

    【解决方案2】:

    想一想您(客户)需要做什么才能得到一杯咖啡。在你的门面,你会有类似

    + Coffee order (Size size) 
    

    在内部你会有类似的东西

    order (Size size)
    {
       grindBeans (size)
       installFilter ()
       getCup...
    etc, etc
       return coffee
    }
    

    一般来说,外观简化了您与对象的交互。

    【讨论】:

      猜你喜欢
      • 2012-11-08
      • 2012-11-16
      • 2011-07-11
      • 2023-03-04
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多