《设计模式大作业报告(共8页).doc》由会员分享,可在线阅读,更多相关《设计模式大作业报告(共8页).doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 设计模式课程大作业报告姓 名:陈明专 业:软件工程班 级:1202日 期:2015年5月29日 学号_ 班级_ 姓名_ 考场号_ 座位号_- - - - - - - - - - - - - - - - - - - - - - - -密 - - - - - - - - - - - - - - - - - - - - -封 - - - - - - - - - - - - - - - - - - - -线 - - - - - - - - - - - - - - - - - - - - - - - - -西安欧亚学院20142015学年第二学期考试试卷专业:软件工程 课程:
2、设计模式 年级:12级 评卷人1234总分完成一个综合项目程序,其中使用所学设计模式两个或者两个以上。要求在文档中首先给出项目程序完成的功能或者解决的问题,然后详细说明模式使用的具体情况,即角色和相应程序代码。文档赋分标准如下:1、程序功能阐述明确,分析清楚。(15分)2、使用两种设计模式,使用得当,并给出相应的角色及程序代码,程序代码有恰当的注释。(60分)3、文档格式正确,排版清晰。(15分)4、如果使用超过两种设计模式,并且使用正确。(10分)说明:以上总分为个人的期末成绩,本课程个人总成绩=平时成绩*40%+期末成绩*60%。专心-专注-专业用户和药店以及制药厂交互的例子一、程序功能描
3、述工厂方法模式:为某药店开发的应用程序需要使用Drug类的某个子类的实例为用户提供药品,而不直接使用Drug的子类的构造方法直接创造对象。因为药店没有能力给出药品的各个成分的含量,只有药厂才有这样的能力。抽象工厂模式:通过创建多个药品工厂的类,让用户可以和创建的对象的类进行脱耦,为用户提供多个相关的药品,方便用户联合使用它们,用户不需要知道药品具体的生产过程将“工厂方法模式”与“抽象工厂模式”相结合,实现用户和创建对象的类脱耦,并且为用户提供多个相关的对象。买药的用户只需要知道去药店买什么药就行了,不必去药厂,也不需要知道要的成分,只需要去药店,然后药店就会提供所需药品的信息,包括成分和生产厂
4、商以及对应的生产线。二、程序代码文件1:Drug.javapublic abstract class Drug /抽象产品类String constitute;String name;public String getConstitute() /获得药品成分return constitute;public String getName() /获取药品名称return name;public abstract String getType(); /获取药品类型文件2:Paracetamol.javapublic class Paracetamol extends Drug /具体产品类Strin
5、g part1 = 每粒含乙酰氨基酚;String part2 = 每粒含咖啡因;String part3 = 每粒含人工牛黄;String part4 = 每粒含马来酸氯苯;String type;public Paracetamol(String name, int a) /具体药品,并创建数组用来存放药品的各种成分含量this.name = name;part1 = part1 + : + a0 + 毫克n;part2 = part2 + : + a1 + 毫克n;part3 = part3 + : + a2 + 毫克n;part4 = part4 + : + a3 + 毫克n;cons
6、titute = part1 + part2 + part3 + part4;public Paracetamol() /具体药品所在生产线System.out.println(氨加黄敏胶囊是使用1号生产线生产的。);Overridepublic String getType() /获取药品类型return type = 氨加黄敏胶囊; 文件3:Amorolfine.javapublic class Amorolfine extends Drug /具体产品类String part1 = 每粒含甲硝唑;String part2 = 每粒含人工牛黄;String type;public Amor
7、olfine(String name, int a) this.name = name;part1 = part1 + : + a0 + 毫克n;part2 = part2 + : + a1 + 毫克n;constitute = part1 + part2;public Amorolfine() System.out.println(甲硝唑胶囊是使用2号生产线生产的。);Overridepublic String getType() / TODO Auto-generated method stubreturn type = 甲硝唑胶囊;文件4:DrugCreator.javapublic i
8、nterface DrugCreator /构造者public abstract Drug getDrug(); /工厂方法文件5:ParaDrugCreator.javapublic class ParaDrugCreator implements DrugCreator / 具体构造者public Drug getDrug() /返回具体药品以及药品成分int a = 250, 15, 1, 10 ;Drug drug = new Paracetamol(氨加黄敏胶囊, a);return drug; 文件6:AmorDrugCreator.java public class AmorDr
9、ugCreator implements DrugCreator /具体构造者public Drug getDrug() int a = 200,5;Drug drug = new Amorolfine(甲硝唑胶囊, a);return drug; 文件7:DrugFactory.java public abstract class DrugFactory /抽象工厂类public abstract Drug createDrug(); 文件8:AmorolfineFactory.java public class AmorolfineFactory extends DrugFactory /
10、具体工厂类public Drug createDrug() /工厂生产药品方法return new Amorolfine();文件9:ParacetamolFactory.javapublic class ParacetamolFactory extends DrugFactory /具体工厂类public Drug createDrug() /工厂生产药品方法return new Paracetamol();文件10:Application.javapublic class Application public static void main(String args) /应用程序DrugF
11、actory factory = new ParacetamolFactory();Drug paracetamol = factory.createDrug();System.out.println(生产线生产的药品类型:+paracetamol.getType();DrugCreator creator = new ParaDrugCreator();Drug drug = creator.getDrug();System.out.println(drug.getName() + 的成分:);System.out.println(drug.getConstitute();factory = new AmorolfineFactory();Drug amorolfine = factory.createDrug();System.out.println(生产线生产的药品类型:+amorolfine.getType();Creator = new AmorDrugCreator();drug = creator.getDrug();System.out.println(drug.getName() + 的成分:);System.out.println(drug.getConstitute();六、程序结果
限制150内