版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单态模式单态模式限制了类实例的创建,但采用这种模式创建的类,可以保证仅有一个实例。为了防止单态模式的类被多次实例化,应将类的构造器设成私有,这样就保证了只能通过静态方法获得类实例,而该静态方法则保证每次返回的实例都是同一个,这样就需要将类的实例设置成类属性,由于该属性需要被静态方法访问,因此该属性应设成静态属性。下面给出单态模式的代码publicclassSingletonText(//该类的一个普通属性intvalue;//使用静态属性保存该类的一个实例privatestaticSingletonTextinstance;//构造器私有化,避免该类别多次实例化privateSingletonText()(Syste:out.println("正在执行构造器");}//提供静态方法来返回该类的实例publicstaticSingletonTextgetInstance()(//实例化类实例前,先检查该类的实例是否存在if(instance==null)(//如果不存在,则新建一个实例instance=newSingletonText();}//返回改类的成员变量:改类的实例returninstance;}//下面对该类的普通属性value的setter和getter方法publicintgetValue()(returnvalue;}publicvoidsetValue(intvalue)(this.value=value;}publicstaticvoidmain(String[]args){SingletonTextsi=SingletonTexgetInstance();SingletonTexts2=SingletonTextgetlnstance();s2.setValue(9);Systeout.println(s1==s2);}}从程序的结果可以看出,改类的两个实例完全相同,这证明单态模式的全部实例是同一共享实例,程序里虽然获得了类的两个实例,但实际上只执行依次构造器,因为对于单态模式的类,无论有多少次的创建实例请求,都只执行一次构造器工厂模式工厂模式是根据调用数据返回某个类的一个实例,此类可以是多个类的某一个类。通常,这些类满足共同的规则(接口)或父类。调用者只关心工厂生产的实例是否满足某种规范,即实现的某个接口是否可供自己正常调用(调用者仅仅使用)。该模式给对象之间作出了清晰的角色划分,降低程序的耦合。下面是工厂模式的实例代码定义Person接口publicinterfacePerson{publicStringsayHello(Stringname);publicStringsayGoodBye(Stringname);下面是Person接口的两个实现类publicclassAmericanimplementsPerson(publicStringsayGoodBye(Stringname)(returnname+",Hello";}publicStringsayHello(Stringname)(returnname+",GoodBye";}}publicclassChineseimplementsPerson(publicStringsayGoodBye(Stringname)(returnname+",您好";}publicStringsayHello(Stringname)(returnname+",下次再见";}}下面是Person工厂的代码publicclassPersonFactory(publicPersongetPerson(Stringethnic)(if(ethnic.equals("chin"))(returnnewChinese();else(returnnewAmerican();以上是最简单的工厂模式框架,其主程序部分如下publicclassFactoryText(publicstaticvoidmain(String[]args){//创建PersonFactory的实例,获得工厂实例PersonFactorypfnewPersonFactory();//定义接口Person的实例Personpnull;//使用工厂获得Person的实例p=pf.getPerson"chin");//下面调用Person接口的方法Systemout.println(p.sayHello("wawa"));Systemout.println(p.sayGoodBye("wawa"));//使用工厂获得Person的另一个实例p=pf.getPerson"ame");//再次调用Person接口的方法Systemout.println(p.sayHello("wawa"));Systemout.println(p.sayGoodBye("wawa"));}}Spring对单态与工厂模式的实现随着Spring提供工厂模式的实现,在使用Spring时,无须自己提供工厂类,因为Spring容器是最大的工厂,Spring使用配置文件管理所有的bean,其配置文件中bean由Spring工厂负责生产和管理,<?xmlversion="1.0"encoding="UTF-8"?><!--beans是Spring配置文件的根元素--><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beanshttp://www.springframework.Org/schema/beans/spring-beans-2.5.xsd"><!--定义第一个bean,该bean的id为chinese--><beanid="chinese"class="lee.Chinese"/><!--定义第二个bean,该bean的id为american--><beanid="american"class="lee.American"/></beans>主程序部分如下:publicclassSpringText(publicstaticvoidmain(String[]args){//实例化Spring容器ApplicationContextctxnewFileSystemXmlApplicationContext("bean.xml");//定义Person接口的实例Personpnull;//通过Spring上下文获得chinese实例p=(Person)ctx.getBea"chinese");//执行chinese实例的方法Systemout.println(p.sayHello("wawa"));Systemout.println(p.sayGoodBye("wawa"));//通过Spring上下文获得american实例p=(Person)ctx.getBea"american");//执行american实例的方法Systemo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖南劳动人事职业学院单招职业倾向性测试题库及答案1套
- 2026年哈尔滨应用职业技术学院单招职业适应性测试模拟测试卷及答案1套
- 2025广东省疾病预防控制中心招聘科研助理1人(公共基础知识)测试题附答案
- 2026宁波市江北区面向2026届高校毕业生招聘高层次和紧缺人才13人笔试参考题库及答案解析
- 2025年甘肃省定西市陇西县福星中心卫生院高塄分院招聘乡村医生(公共基础知识)综合能力测试题附答案
- 2026中国安能集团科工有限公司招聘6人笔试参考题库及答案解析
- 2025河南省人力资源开发中心有限公司招聘1人考试题库附答案
- 2025年甘肃省陇南师范学院第二批高层次人才和急需紧缺专业技术人才引进(20人)参考题库附答案
- 2025广东广州市天河区灵秀小学招聘英语教师1人(学校自筹经费)考试历年真题汇编附答案
- 2025年保山市部分医疗卫生事业单位招聘博士研究生(10人)笔试备考题库附答案
- DB3502-Z 5026-2017代建工作规程
- 广东省大湾区2023-2024学年高一上学期期末生物试题【含答案解析】
- 第四单元地理信息技术的应用课件 【高效课堂+精研精讲】高中地理鲁教版(2019)必修第一册
- 鲁科版高中化学必修一教案全册
- 提高隧道初支平整度合格率
- 2023年版测量结果的计量溯源性要求
- 建筑能耗与碳排放研究报告
- GB 29415-2013耐火电缆槽盒
- 中国古代经济试题
- 软件定义汽车:产业生态创新白皮书
- 磷石膏抹灰专项施工方案
评论
0/150
提交评论