单例模式和工厂模式

上传人:lis****210 文档编号:179186511 上传时间:2022-12-31 格式:DOCX 页数:3 大小:12.32KB
返回 下载 相关 举报
单例模式和工厂模式_第1页
第1页 / 共3页
单例模式和工厂模式_第2页
第2页 / 共3页
单例模式和工厂模式_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述
单例模式和工厂模式1. 工厂模式首先需要说一下工厂模式。工厂模式根据抽象程度的不同分为三种:简单工厂模式(也叫 静态工厂模式)、这里所讲述的工厂方法模式、以及抽象工厂模式。工厂模式是编程中经 常用到的一种模式。它的主要优点有:可以使代码结构清晰,有效地封装变化。在编程中,产品类的实例化有时候是比较复 杂和多变的,通过工厂模式,将产品的实例化封装起来,使得调用者根本无需关心产 品的实例化过程,只需依赖工厂即可得到自己想要的产品对调用者屏蔽具体的产品类。如果使用工厂模式,调用者只关心产品的接口就可以了, 至于具体的实现,调用者根本无需关心。即使变更了具体的实现,对调用者来说没有 任何影响。降低耦合度。产品类的实例化通常来说是很复杂的,它需要依赖很多的类,而这些类 对于调用者来说根本无需知道,如果使用了工厂方法,我们需要做的仅仅是实例化好 产品类,然后交给调用者使用。对调用者来说,产品所依赖的类都是透明的。 实现 inter face IPr oduct public void pr oductMethod(); class Pr oduct impleme nts IPr oduct public void pr oductMethod() System.out.p rintln (Java pr oductMethod call); inter face IFacto ry public IPr oduct cr eateP roduct();class Factory implements IFactory public IProduct createProduct() return new Produc t();public class Client public static void main(String args) IFactory factory 二 new Factory();IProduct prodect 二 factory.createProduct(); prodec t.produc tMet hod();2单例模式(懒汉)单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一 个全局变量使得一个对象被访问,但它不能阻止你实例化多个对象。一个最好的办法是, 让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以 提供一个访问该实例的方法。也就是说,很多时候我们需要全局的对象,如一个工程中,数据库访问对象只有一个, 这时,可以考虑使用单例模式。单例模式比全局对象好还包括:单例类可以继承,如下例 中的C+代码。单例模式的关键点在于:构造函数私有,静态的GetInstance另外,在C+中必须注意内存的释放。C+、Java、C#中还要注意多线程时的同步问题,另外在多线程可以以合适的方式保证共享变量仅初始化一次public class Singletonprivate static volatile Singleton instance=NULL;private Singleton()System.out.println(Java Singleton);public static Singleton getInstance()if(instance = NULL)synchronized( Singleton.calss) if(instance = NULL)instance = new Singleton();return instance;饿汉式和懒汉式的比较:1饿汉式单例,由于类被加载的时候就将自己实例化,所以,从资源利用的角度来说,饿汉式单 例比懒汉式单例效率更差2懒汉式单例在实例化的时候,必须处理好多个线程同时引用造成的访问限制问题也就是, 很有可能有两个线程同时去调用了这个获取单例的方法,造成了单例被创建了多次,懒汉式 单例模式线程安全问题:假如现在有两个线程A和线程B,线程A执行到 this.singletonPattern = new SingletonPattern(),正在申请内存分配,可能需要 0.001 微秒,就在这0.001微秒之内,线程B执行到if(this.singletonPattern = null),你说这个 时候这个判断条件是true还是false?是true,那然后呢?线程B也往下走,于是乎就在 内存中就有两个SingletonPattern的实例了。所以,在编写懒汉式单例模式时,应注意线 程安全问题(由全局变量及静态变量引起的),这里可以用互斥同步的方式去解决。(面 试可考的地方)二.Java基础1、bit位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为O”或“1”。2、byte字节:字节是计算机存储容量的基本单位,一个字节由8位二进制数组成。在计 算机内部,一个字节可以表示一个数据,也可以表示一个英文字母,两个字节可以表示一 个汉字。1B 二8bitJava基本数据类型 boolea n 1bitchar 16bit-2Byte short 16bit-2Byte int 32bit -4Byte float 32bit4Byte long 64bit-8Byte double 64bit8Byte
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!