设计模式大作业报告(共8页).doc
精选优质文档-倾情为你奉上 设计模式课程大作业报告姓 名:陈明专 业:软件工程班 级:1202日 期:2015年5月29日 学号_ 班级_ 姓名_ 考场号_ 座位号_- - - - - - - - - - - - - - - - - - - - - - - -密 - - - - - - - - - - - - - - - - - - - - -封 - - - - - - - - - - - - - - - - - - - -线 - - - - - - - - - - - - - - - - - - - - - - - - -西安欧亚学院20142015学年第二学期考试试卷专业:软件工程 课程:设计模式 年级:12级 评卷人1234总分完成一个综合项目程序,其中使用所学设计模式两个或者两个以上。要求在文档中首先给出项目程序完成的功能或者解决的问题,然后详细说明模式使用的具体情况,即角色和相应程序代码。文档赋分标准如下:1、程序功能阐述明确,分析清楚。(15分)2、使用两种设计模式,使用得当,并给出相应的角色及程序代码,程序代码有恰当的注释。(60分)3、文档格式正确,排版清晰。(15分)4、如果使用超过两种设计模式,并且使用正确。(10分)说明:以上总分为个人的期末成绩,本课程个人总成绩=平时成绩*40%+期末成绩*60%。专心-专注-专业用户和药店以及制药厂交互的例子一、程序功能描述工厂方法模式:为某药店开发的应用程序需要使用Drug类的某个子类的实例为用户提供药品,而不直接使用Drug的子类的构造方法直接创造对象。因为药店没有能力给出药品的各个成分的含量,只有药厂才有这样的能力。抽象工厂模式:通过创建多个药品工厂的类,让用户可以和创建的对象的类进行脱耦,为用户提供多个相关的药品,方便用户联合使用它们,用户不需要知道药品具体的生产过程将“工厂方法模式”与“抽象工厂模式”相结合,实现用户和创建对象的类脱耦,并且为用户提供多个相关的对象。买药的用户只需要知道去药店买什么药就行了,不必去药厂,也不需要知道要的成分,只需要去药店,然后药店就会提供所需药品的信息,包括成分和生产厂商以及对应的生产线。二、程序代码文件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 /具体产品类String 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"constitute = 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 Amorolfine(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 interface 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 AmorDrugCreator 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 /具体工厂类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) /应用程序DrugFactory 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();六、程序结果