首页 > 代码库 > 单例模式
单例模式
单例模式,也就是只有一个实例0-0
这也是设计模式中最简单的一个模式,
所有,我要始终记住,设计模式的六大原则
单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。
里氏替换原则
定义:所有引用基类的地方必须能透明地使用其子类的对象。
依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
迪米特法则
定义:一个对象应该对其他对象保持最少的了解。
开闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
下面我们来看单例模式
首先我们需要想想,怎么让一个类只实例化一次,有的人说,静态类,有的人说静态方法
从这里我们就知道了,静态的东西只初始化一次,也就是说只有一个实例,
所以我们的单例模式也是用了"静态"
第一种方法如下:使用了一个公开的静态方法来返回一个实例,而且把构造函数设置为了私有的,这样就不可以通过new 关键字来创建新的实例
class person { static person pser=null; private person() { } public static person GetInit() { if (pser==null) { pser = new person(); } return pser; } }
第二种方法
可以声明这个类为静态的,基本上和上面那个方法是一样的
static class man { }
这样我们就实现了单例模式,当然,你可能会问,这个单例模式有什么用处啊?
1.单例模式可以一直在内存中保留着,知道垃圾回收,所以对于访问次数高的类,这样很节省资源
2.提供了对唯一实例的受控访问。
当然我们上面这样写还是不完善的,因为还有可以有多线程的情况,所以改写代码如下
class person { static Object o = new Object(); static person pser = null; private person() { } public static person GetInit() { if (pser == null) { lock (o) { if (pser == null) { pser = new person(); } } } return pser; } }
单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。