版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本文格式为Word版,下载可任意编辑工厂模式,单例模式案例实验报告 软件设计与体系结构 实 实 验 报 告 课程名称 软件设计与体系结构 课程编号 0920216 试验项目名称 工厂模式,单例模式案例 学号 班级 姓名 专业 同学所在学院 指导老师 试验室名称地点 试验时间 试验名称: 工厂模式,单例模式 模式案例 试验目的:工厂单例模式(Observer Pattern)是设计模式中行为模式的一种,它解决了上述具有一对多依靠关系的对象的重用问题。此模式的参加者分为两大类,一类是被观看的目标,另一类是观看该目标的观看者们。正由于该模式是基于"一对多'的关系,所以该模式一般是应
2、用于由一个目标对象和 N 个观看者对象组成(当然也可以扩展为有多个目标对象,但我们现在只争论前者)的场合。当目标对象的状态发生转变或做出某种行为时,正在观看该目标对象的观看者们将自动地、连锁地作出相应的响应行为。 通过本次试验了解观看者模式的原理。并能够运用观看者模式来进行编程。 试验内容 1 UML类图 工厂模式手机工厂 MobileMobileFactoryNokia MotorolaMotorolaFatory NokiaFactory 工厂模式电脑产品 单例模式: 2 程序的源代码 工厂模式手机工厂 public interface Mobile public void call();
3、 public interface MobileFactory public Mobile produceMobile(); public class Motorola implements Mobile public void call() System.out.println(摩托罗拉手机); public class Nokia implements Mobile public void call() System.out.println(诺基亚手机); public class MotorolaFactory implements MobileFactory public Mobile
4、 produceMobile() System.out.print(摩托罗拉工厂制造了); return new Motorola(); public class NokiaFactory implements MobileFactory public Mobile produceMobile() System.out.print(诺基亚工厂制造了); return new Nokia(); public class Client public static void main(String argv) MobileFactory mf; Mobile m; mf=new MotorolaFa
5、ctory(); m=duceMobile(); m.call(); mf=new NokiaFactory(); m=duceMobile(); m.call(); 工厂模式电脑产品 public interface CPU public String getCPU(); public class AMD implements CPU public String getCPU() return Athlon XP 2021+; public class Intel implements CPU public String getCPU() return 奔腾4 3.2
6、C; public interface HardDisk public String getSize(); public class Maxtor implements HardDisk public String getSize() return MaXLine Plus II 200G; public class WestDigit implements HardDisk public String getSize() return WD2500JD 250G; public interface MainBoard public void Attach(CPU cpu) throws Ex
7、ception; public class MSI865PE implements MainBoard public void Attach(CPU cpu) throws Exception if(cpu.getClass ().toString ().endsWith(Intel) System.out.println(MSI865PE); else throw new Exception(主板MSI865PE只能配Intel的CPU); public class MSIK7N2G implements MainBoard public void Attach(CPU cpu) throw
8、s Exception if(cpu.getClass ().toString ().endsWith(AMD) System.out.println(MSIK7N2G); else throw new Exception(主板MSIK7N2G只能配AMD的CPU); public abstract class ComputerFactory CPU cpu; HardDisk hd; MainBoard mb; public void show() try System.out.println(this.getClass().getName() .toString () + (生产的电脑配置
9、); System.out.println (CPU: + cpu.getCPU (); System.out.println (HardDisk: + hd.getSize (); System.out.print (MainBoard:); mb.Attach(cpu); catch(Exception e) System.err.println(e.getMessage(); public class IBM extends ComputerFactory IBM() cpu = new Intel(); hd = new WestDigit(); mb = new MSI865PE()
10、; public class Dell extends ComputerFactory Dell() cpu = new AMD(); hd = new Maxtor(); mb = new MSIK7N2G(); public class Client public static void main(String argv) IBM ibm = new IBM(); ibm.show(); Dell dell = new Dell(); dell.show(); 单例模式: package Singleton; public class AgentMazeFactory extends Ma
11、zeFactory public AgentMazeFactory() System.out.println(a AgentMazeFactory has been created); package Singleton; public class EnchantedMazeFactory extends MazeFactory public EnchantedMazeFactory () System.out.println(a EnchantedMazeFactory has been created); package Singleton; public abstract class M
12、azeFactory private static MazeFactory uniqueInstance = null; protected MazeFactory(); public static MazeFactory instance() if(uniqueInstance=null) return instance(AgentMazeFactory); else return uniqueInstance; public static MazeFactory instance(String s) if(uniqueInstance=null) /*if(s.equals(AgentMa
13、zeFactory) uniqueInstance=new AgentMazeFactory(); else if(s.equals(EnchantedMazeFactory) uniqueInstance=new EnchantedMazeFactory();*/ try uniqueInstance=(MazeFactory) Class.forName(s).newInstance(); catch (InstantiationException e) / TODO Auto-generated catch block e.printStackTrace(); catch (Illega
14、lAccessException e) / TODO Auto-generated catch block e.printStackTrace(); catch (ClassNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); else System.out.println(only one instance can be created); return uniqueInstance; package Singleton; public class Test public static void
15、 main(String args) / TODO Auto-generated method stub MazeFactory factory=MazeFactory.instance(Singleton.AgentMazeFactory); factory = MazeFactory.instance(Singleton.EnchantedMazeFactory); 3试验截图 工厂模式手机工厂 工厂模式电脑产品 单例模式: 对该模式的熟悉 经过本次工厂模式和单例模式的试验,通过自己动手编代码,是自己理解工厂单例模式机制,并且知道工厂模式有适用性在下列状况下使用工厂方法模式:1.一个类不能预期它必需创建的对象的类 2.一个类盼望由其子类来指定它创建的对象优点 1.通过消退应用特定的类的实例化,代码变得更敏捷、更可复用2.代码只处理 Product 类的接口,能与任何支持该接口的 ConcreteProduct 类一起工作缺陷 1.客户端可能只因实例化一个特定的 ConcreteProduct 而生成 Creator 类的子类。单例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省枣庄市滕州市2024-2025学年七年级上学期1月期末考试道德与法治试卷(含答案)
- 江苏省宿迁市2024-2025学年高三1月第一次调研测试化学试题(含答案)
- 09年1月中英合作财务管理真题及答案
- 福建省南平市剑津中学2020-2021学年高三语文模拟试题含解析
- 2025年度保密协议模板:涉密数据存储服务合同3篇
- 2024网络游戏内容安全与防沉迷系统咨询合同
- 2024版单位汽车租赁合同范本
- 2024软件著作权登记与反侵权调查专业服务合同3篇
- 2025年度农产品加工合作合同3篇
- 2024订车协议范本
- 生物治疗与再生医疗应用
- 帕金森患者生活质量问卷(PDQ-39)
- 挖掘机、装载机岗位风险告知卡
- JGJT280-2012 中小学校体育设施技术规程
- 基于MATLAB光伏储能并网的直流微电网系统的研究与设计
- 药店突发事件与应急处理
- JJG 976-2024透射式烟度计
- (完整word)工程造价咨询公司管理制度
- 乡村广场景观分析报告
- 急性白血病小讲课护理课件
- 万科物业-常见突发事件处理
评论
0/150
提交评论