2022年单态模式和简单工厂模式 .pdf
《2022年单态模式和简单工厂模式 .pdf》由会员分享,可在线阅读,更多相关《2022年单态模式和简单工厂模式 .pdf(12页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、单态模式和简单工厂模式一、单态(例)模式:1.定义:单态模式又叫Singleton 模式。此模式的主要作用是保证在Java 的应用程序中,一个类只有一个实例(对象)存在。2.使用:在项目的很多地方都会用到,比如说数据库的连接。3.为什么要使用单态模式?好处在于可以节省内存,因为它限制了实例的个数,有利于 Java垃圾回收。一个简单的类及对象,方法的调用版本一:package com.sinojava.singleton; class Single publicvoid say() System.out .println( 我开始说话了 .); publicclass SingletonDemo
2、 publicstaticvoid main(String args) Single single1=new Single(); single1.say(); Single single2=new Single(); single2.say(); 运行结果:我开始说话了. 我开始说话了 . 按照上面的代码,我们可以在main 方法中 new 出无数个 Single 类的对象,假如现在要求在内存中只能有一个Single 对象,该如何实现?分析: 我们知道, 所有类在实例化对象时都要调用构造方法,所以我们在构造方法处进行修改,将构造方法控制住。让公有的构造方法变为私有的。class Single
3、private Single() publicvoid say() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - System.out .println( 我开始说话了 .); publicclass SingletonDemo publicstaticvoid main(String args) Single single1=new Single(); single1.say(); Single single2=new S
4、ingle(); single2.say(); 现在运行程序,发现运行出错。因为Single的构造方法是私有的,所以不能在外部去调用。Single类的私有构造方法只对此类内部可见,对类外是不可见的。沿此思路,继续思考:既然Single的私有构造方法只对此类内部可见,那我们是否可以在此类内部 new 出一个对象供外部调用呢?版本二:package com.sinojava.singleton; class Single private Single() static Single s=new Single(); publicvoid say() System.out .println( 我开始说
5、话了 .); publicclass SingletonDemo publicstaticvoid main(String args) Single single=Single.s; single.say(); 运行结果正常。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 分析:但我们知道, 一个规范的java 类应该封装属性, 即所有的属性都应该是private 修饰。则代码应为:package com.sinojava.s
6、ingleton; class Single private Single() privatestatic Single s=new Single(); publicvoid say() System.out .println( 我开始说话了.); publicclass SingletonDemo publicstaticvoid main(String args) Single single=Single.s ; single.say(); 但运行程序报错,原因是s 是私有变量,在外部不能找到。我们知道规范的java 类都会私有化属性,但会为每一个属性配置公有的访问方法。版本三:私有化属性
7、,提供静态的公有的方法,可以使用类名直接调用。package com.sinojava.singleton; class Single private Single() privatestatic Single s =new Single(); publicstatic Single getInstance() returns; publicvoid say() System.out .println( 我开始说话了 .); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共
8、 12 页 - - - - - - - - - publicclass SingletonDemo publicstaticvoid main(String args) Single single=Single.getInstance();single.say(); 分析:目前程序基本上没有问题了,但我们发现, s 这个引用可以指向无数个new 出来的 Single对象,因此应在定义Single s前加上 final关键字,使程序变为下列版本:package com.sinojava.singleton; class Single private Single() privatestaticf
9、inal Single s =new Single(); publicstatic Single getInstance() returns; publicvoid say() System.out .println( 我开始说话了 .); publicclass SingletonDemo publicstaticvoid main(String args) Single single=Single.getInstance(); single.say(); 这样,就会保证在整个程序的运行过程中,只会有一个Single 的对象。至此,一个简单的单态设计模式就结束了。名师资料总结 - - -精品
10、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 验证两个引用是否指向了同一对象?package com.sinojava.singleton; class Single private Single() privatestaticfinal Single s =new Single(); publicstatic Single getInstance() returns; publicvoid say() System.out .println( 我开始
11、说话了 .); publicclass SingletonDemo publicstaticvoid main(String args) Single single1=Single.getInstance(); Single single2=Single.getInstance(); System.out .println(single1=single2); 运行结果为:true简单工厂模式简单工厂模式又叫静态工厂模式。顾名思义,它是用来实例化目标类的静态类。package com.sinojava.factorydemo; interface ICar/汽车的想法有了publicvoid r
12、un(); publicvoid stop(); class BenChi implements ICar publicvoid run() System.out .println( 奔驰启动了。 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - publicvoid stop() System.out .println( 奔驰停车了。 ); class Ford implements ICar publicvoid ru
13、n() System.out .println( 福特汽车启动了.); publicvoid stop() System.out .println( 福特汽车停车了.); publicclass FactoryDemo1 publicstaticvoid main(String args) ICar car1=new BenChi();/new Ford()car1.run(); car1.stop(); 运行结果:奔驰启动了。奔驰停车了。分析: 上面的做法有一个弊端:现在不论是奔驰还是福特要想实例化对象,就必须他们的父类 ICar 联系起来,这样他们之间就紧密的耦合了。我们就想,如果能像现实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年单态模式和简单工厂模式 2022 年单态 模式 简单 工厂
限制150内