`
yan465942872
  • 浏览: 14586 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

设计模式学习之四(上)—开自己的比萨店

 
阅读更多

前面说过其中之一的设计原则我们不应该依赖实现编程,但是当我们每次用new时不正是在依赖实现编程吗

正如上面的代码,我们使用接口让代码有了弹性,但是还是得建立具体类的实例,当有一群相关的具体类时通常会写出这样的代码:

当看到这样的代码,一旦有变化或扩展,就要重新打开这段代码进行修改,这违背了对修改关闭的原则,通常这样修改过的代码将造成部分系统更难维护和更新,而且更容易犯错。那怎么办呢,想想前面所有的设计原则之一:封装变化。那么我们开始识别变化的部分吧。

假设你有个比萨店,身为比萨店得主人,你的代码可能这样写:

如果你需要更多的比萨,必须增加一些代码,来根据比萨的类型来制造比萨:

但压力来自于增加更多的比萨,或者某种比萨卖的不好我想从比萨店去掉,就要一再修改刚增加上的代码,但是比萨的准备,烘烤,包装多年来很少变,变的只是被制作的对象而已。既然已经看出来那些变化,那些不变化的地方,是我们封装变化的时候了,将创建对象移到orderPizzas()之外,移到别的地方,这个地方我们称之为工厂,但需要比萨时就向工厂要,至于比萨产生的细节我不关心,我只关心我是否能拿到比萨。我们建立一个简单比萨工厂:

是时候修改我们的客户代码了,我们所要做的是向工厂要比萨,其他不用关心:

上面的简单工厂其实不是一个设计模式,反而更像一种编程习惯。有些编程人员习惯把它误认为是“工厂模式”。但也不要因为简单工厂不是一个真正的模式,就忽略他的用法,让我们看看新的比萨店的类图:

谢谢简单工厂为我们暖身。接下来登场的是两个重量级模式,他们都是工厂,你将会看到更多的比萨。

分享到:
评论

相关推荐

    设计模式-简单工厂模式-披萨店C#语言版

    简单工厂模式是软件设计模式中的一种,它属于创建型模式,旨在提供一个统一的接口,用来创建一组相关或相互依赖的对象。在这个例子中,我们关注的是如何使用C#语言实现这个模式,特别是在披萨店的场景下。 在披萨店...

    比萨店存储库

    "比萨店存储库"是一个基于Java技术的项目,它可能是用于管理比萨店订单、库存和客户数据的软件系统。在这个项目中,"存储库"通常指的是在软件工程中的Repository模式,它是一个介于业务逻辑层和服务数据访问层之间的...

    比萨店

    MVC(模型-视图-控制器)设计模式可以应用于整个系统架构,使代码更加结构化和易于维护。 总之,【比萨店】项目是一个综合性的Java应用,涵盖了面向对象编程、数据结构、并发处理、数据库交互、UI设计等多个Java...

    Pizzeria_PrzemyslawCukierski:教育比萨店项目(WPF)

    【描述】:该项目提供了一个模拟比萨店的环境,让学生或开发者能够学习和掌握WPF的各种概念和功能。通过创建一个互动的比萨订购系统,用户可以了解如何设计、实现和管理UI元素,如菜单、订单表单、支付流程等。此外...

    30型全封闭微电脑数控豆芽机和比萨饼机价格.docx编程资料

    现代的比萨饼机还可能集成了一些智能化的功能,如预设多种烹饪模式等,以适应不同类型的比萨饼制作需求。 #### 燃煤小笼包子蒸炉与汉堡机 **DH40型三孔燃煤小笼包子蒸炉**采用了先进的CNC数控机床冲压制造工艺,...

    REA:资源事件代理模式和示例

    书中的例子是跟随一个小比萨店,该比萨店每天处理交换和转换过程。 该项目是Java Spring实现的简单交换过程和识别模式,如书中所述。 本文档将描述如何将REA示例导入Spring STS IDE,如何运行它以及在应用程序中...

    Worthtrade:从根做比萨? 模拟-开源

    9. **设计原则与模式**:项目可能会遵循软件工程的最佳实践,如SOLID原则,以及MVC(模型-视图-控制器)或MVVM(模型-视图-视图模型)设计模式。 10. **文档与社区**:优秀的开源项目会有详细的文档,包括README...

    TPOGame:TPO 应用程序

    TPOGame是一个专门为TPO比萨店设计的应用程序,旨在模拟餐厅运营的各个环节,提供一种互动式的体验。这个项目是用Java编程语言开发的,Java以其跨平台性和强大的面向对象特性,成为了构建这种类型应用程序的理想选择...

    anticapizzeria,.zip

    其标题暗示了该项目可能与反常的比萨店(Anticapizzeria)有关,但实际上,这很可能是一个以编程示例为主题的项目,利用Kotlin语言和函数式编程来实现领域驱动设计(DDD)中的Command Query Responsibility ...

    PizzaShop:大三软件项目

    他们还可能接触到了Java集合框架、异常处理、IO流、网络编程以及MVC(模型-视图-控制器)设计模式等高级主题。 【文件名称列表】:PizzaShop-master "PizzaShop-master"目录名暗示了这是一个Git仓库的主分支,可能...

    Slice-of-a-Pizza:那个美味的比萨中最神奇的一块。

    10. **设计模式**:如果项目规模较大,可能会涉及软件设计模式,比如工厂模式(用于创建披萨实例)或装饰器模式(用于添加额外的调料或配料)。 通过这个项目,初学者不仅能学习Python编程的基础,还能了解软件开发...

    PizzaProject:这是CIS 122类的小组项目

    这可能包括创建一个在线比萨订购系统、比萨店库存管理软件,或者是比萨制作流程的模拟应用。这样的项目能够帮助学生实践编程技能,同时理解业务流程和用户需求。 在CIS 122级别的项目中,学生可能会接触到以下知识...

    PizzeriaEdiMVC

    在这个项目中,我们将深入探讨JavaScript在构建复杂Web应用中的核心作用,以及MVC设计模式如何帮助我们组织代码,提高可维护性和可扩展性。 首先,MVC是一种软件架构模式,它将应用程序分为三个主要部分:模型...

    slicks_slices:使用Gatsby,React和Sanity Headless CMS的在线披萨商店

    光滑的切片比萨店(Slicks Slices)是一个基于Web的在线披萨订购平台,采用现代前端技术栈构建,其中包括Gatsby、React和Sanity Headless CMS。这个项目展示了如何利用这些技术来创建一个功能完备且用户体验优良的...

    test-pizzeria

    3. **MVC模式**:大多数PHP框架采用Model-View-Controller(MVC)设计模式,它将业务逻辑(Model)、数据展示(View)和用户交互(Controller)分离,使代码结构更清晰,便于维护。 4. **数据库交互**:在线比萨饼...

    Joomla 1.6 初学者指南

    - **A PIZZA FRANCHISE (比萨特许经营店)** - 介绍如何为餐饮业创建网站。 - **A DANCE SCHOOL (舞蹈学校)** - 演示如何构建舞蹈培训相关的网站。 - **A BED AND BREAKFAST (民宿)** - 展示如何使用 Joomla 创建...

Global site tag (gtag.js) - Google Analytics