面向对象程序设计设计模式论文

面向对象程序设计设计模式论文

ID:35581268

大小:657.00 KB

页数:16页

时间:2019-03-30

面向对象程序设计设计模式论文_第1页
面向对象程序设计设计模式论文_第2页
面向对象程序设计设计模式论文_第3页
面向对象程序设计设计模式论文_第4页
面向对象程序设计设计模式论文_第5页
资源描述:

《面向对象程序设计设计模式论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、面向对象程序设计设计模式论文姓名:邓鹏辉班级:软硕4班学号:M201376109一.程序设计目标和使用说明该程序在eclipse3.2版本中完成,用的是jdk1.5。该程序的设计目的是为了学习java设计模式,应用其中的少数几个模式编写一个程序,在编写程序的过程中亲身实践相应设计模式,学习体会。该程序的设计目标是完成一个餐厅的经营流程。其中的角色包括消费者,服务员,经理,以及厨房的厨师。在程序设计中有四个包。图1-1项目包1.client包。图1-2Client包文件其中利用策略模式,对顾客进行划分。

2、让顾客具有各自不同的特点和属性,并且可以在程序运行的时候,利用相关方法进行修改,实现客户在进行时的需求更改。2.waiter包。图1-3waiter包文件在waiter包中,是利用观察者模式实现的餐厅服务系统。经理作为subject,然后服务员作为Observer,订阅信息。在信息改变的时候,由经理通知所有的服务员,以便所有的服务员得到最新的信息,在业务方面不会出错。然后由于餐厅厨房里也需要知道菜单信息,以及及时更改的信息。所以将chef也作为订阅者加入到list中,跟服务员一起接收新的信息。3.ki

3、tchen包。包括文件:图1-4kitchen包文件利用模板模式将菜肴加工的过程进行优化,将相同步骤抽象出来。然后又利用简单工厂模板方法来将菜类进行抽象,利用一个例子,将牛肉类进行抽象。4.myrestaurant包。其中包括main方法。图1-5myrestaurant包文件在该包中,main方法中导入前三个包,进行综合调用。综合利用之前的各个角色,可以充分模拟餐厅的基本业务。实例一个晚宴和午餐的客人。他们是根据自己的特点来构造了自己的属性。后来他们又更改了自己选择。然后他们提交点单给经理,经理会同

4、志所有服务员和厨师。厨师会根据自己读到的点单来做菜。一.模板及其描述本程序中综合运用了策略模式,观察者模式,模板模式和工厂模式。下面就四个模式分别进行说明。1.2.2.1策略模式策略模式(StrategyPattern)中体现了两个非常基本的面向对象设计的基本原则:封装变化的概念;编程中使用接口,而不是对接口实现。策略模式属于对象行为型设计模式,主要是定义一系列的算法,把这些算法一个个封装成拥有共同接口的单独的类,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。这里

5、的算法不要狭义的理解为数据结构中算法,应该理解为不同的业务处理方法。这种做法会带来什么样的好处呢?它将算法的使用和算法本身分离,即将变化的具体算法封装了起来,降低了代码的耦合度,系统业务策略的更变仅需少量修改。算法被提取出来,这样可以使算法得到重用,这种情况还可以考虑使用享元模式来共享算法对象,来减少系统开销(但要注意使用享元模式的建议条件)。先看看策略模式的结构:要使算法拥有共同的接口,就要实现一个接口或者一个抽象类出来才行。这样结构的轮廓也就出来了,可用简单的类图来表示它们之间的关系:图2-1策略

6、模式类图策略模式由三个角色组成:算法使用环境角色:算法被引用到这里和一些其它的与环境有关的操作一起来完成任务;抽象策略角色:规定了所有具体策略角色所需的接口。在java它通常由接口或者抽象类来实现;具体策略角色:实现了抽象策略角色定义的接口。图2-2Client包文件在此包中,CookingOrder,SweetOrder,DrinkOrder为三个接口,分别用来定义顾客的三个餐饮属性。FiveCooking,SevenCooking,TatalCooking为对接口CookingOrder的实现。S

7、weetOk,SweetNo为对SweetOrder的实现。DrinkTea,DrinkCoffee,DrinkUsquebaugh为对接口DrinkOrder的实现。分别完成对菜式的要求,甜点的要求,和酒水的要求。接口只提供空方法,后面继承类个别实现。举一例:a)接口SweetOrderpackageclient;publicinterfaceSweetOrder{publicStringsweet();}提供一个抽象方法。b)类SweetOkpackageclient;publicclassSwe

8、etOkimplementsSweetOrder{publicStringsweet(){System.out.println("IwanttheSweet");return"IwanttheSweet";}}c)类SweetNo:packageclient;publicclassSweetNoimplementsSweetOrder{publicStringsweet(){System.out.println("IdonotwanttheSweet")

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。