版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单态模式单态模式限制了类实例的创建,但采用这种模式创建的类,可以保证仅有一个实例。为了防止单态模式的类被多次实例化,应将类的构造器设成私有,这样就保证了只能通过静态方法获得类实例,而该静态方法则保证每次返回的实例都是同一个,这样就需要将类的实例设置成类属性,由于该属性需要被静态方法访问,因此该属性应设成静态属性。下面给出单态模式的代码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贵州建养公路技术咨询有限公司招聘6人笔试备考试题及答案详解
- 2026山东烟台综合保税区华晟发展有限公司招聘3人笔试备考试题及答案详解
- 2026年大庆市大同区街道办人员招聘考试参考题库及答案解析
- 工程创优创优策划实施计划方案
- 2026年徽银金融租赁有限公司社会招聘笔试备考题库及答案详解
- 2026贵州贵阳农投奥瑞金现代种业有限公司招聘8人笔试备考题库及答案详解
- YS/T 433-2016银精矿
- GB/T 6074-2006板式链、连接环和槽轮尺寸、测量力和抗拉强度
- GB 29415-2013耐火电缆槽盒
- 2022年天津市河西区中考数学一模试题及答案解析
- GA/T 1444-2017法庭科学笔迹检验样本提取规范
- 2022年大理白族自治州大理财政局系统事业单位招聘笔试试题及答案解析
- 诺和龙诺和龙在糖尿病心脑血管方面的作用专家讲座
- 阿片类药物中毒的急救处理课件
- 种业现状及发展思考课件
- 某大型化工集团公司导入WCM世界级制造策划资料课件
- DBJ∕T13-354-2021 既有房屋结构安全隐患排查技术标准
评论
0/150
提交评论