单例模式及原理

设计模式:让代码可重用,让代码更容易被他人理解、保证代码可靠性。

经典设计模式分为三种类型。

创建模型式:单例模式、工厂模式等

结构型模式:装饰模式、代理模式等

行为型模式:模版方法模式、迭代器模式等

单例设计模式:意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。使用性:

当前只能有一个实例而且客户可以从一个众所周知的访问它。任何情况下,该类只能创建一个实例!

单例设计模式创建步骤:1.定义一个私有的静态的当前类类型的属性。2私有化构造方法。

3.定义一个静态的可以获取当前类实例的方法。这个方法中我们可以判断是否创建过实例,创

建过就直接返回,从而达到单例的效果。

private static DemoSingleton obj;

//或private static DemoSingleton obj=new DemoSingleton();

private DemoSingleton(){}

public static DemoSingleton getInstance(){

if(obj==null){

obj=new DemoSingleton();

}

return obj;

}

模版方法模式:意图:定义一个操作中的算法过程的框架,而将一些步骤延迟到子类中实现。

类似于定义接口或抽象类,子类去实现抽象方法。

时间: 2024-11-08 21:45:06

单例模式及原理的相关文章

单例模式{设计原理}

class Cpp(object): """单例模式实现""" def __new__(cls, *args, **kwargs): if not hasattr(Cpp, "_instance"): cls._instance = super(Cpp,cls).__new__(cls, *args, **kwargs) return cls._instance 如果没有创建对象,就创建对象_instance,如果类里面有_i

深刻理解Python中的元类(metaclass)以及元类实现单例模式

深刻理解Python中的元类(metaclass)以及元类实现单例模式 在看一些框架源代码的过程中碰到很多元类的实例,看起来很吃力很晦涩:在看python cookbook中关于元类创建单例模式的那一节有些疑惑.因此花了几天时间研究下元类这个概念.通过学习元类,我对python的面向对象有了更加深入的了解.这里将一篇写的非常好的文章基本照搬过来吧,这是一篇在Stack overflow上很热的帖子,我看http://blog.jobbole.com/21351/这篇博客对其进行了翻译. 一.理解

窗体的单例模式

程序下载地址: 1.模式窗体与非模式窗体 非模式窗体:创建的窗体与当前活动窗体没有建立任何关系,可以在新建窗体打开的情况下操作当前的活动窗体. 1 frmMain m =new frmmain(); 2 m.Show(); 模式窗体:只有当新建的窗体关闭后,当前的活动窗体才能重新获得控制权.换句话说,如果不关闭新建窗体,则不能对原来的活动窗体进行任何操作. 1 frmMain m = new frmMain(); 2 m.ShowDialog(); 2.使用模式窗体与非模式窗体的直观感受 非模式

[转] JavaScript 单例模式

定义 确保一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式使用的场景 比如线程池.全局缓存等.我们所熟知的浏览器的window对象就是一个单例,在JavaScript开发中,对于这种只需要一个的对象,我们的实现往往使用单例. 实现单例模式 (不透明的) 一般我们是这样实现单例的,用一个变量来标志当前的类已经创建过对象,如果下次获取当前类的实例时,直接返回之前创建的对象即可.代码如下: // 定义一个类 function Singleton(name) { this.name = na

Python设计模式 - 创建型 - 单例模式(Singleton) - 十种

对于很多开发人员来说,单例模式算是比较简单常用.也是最早接触的设计模式了,仔细研究起来单例模式似乎又不想看起来那么简单.我们知道单例模式适用于提供全局唯一访问点,频繁需要创建及销毁对象等场合,的确方便了项目开发,但是单例模式本身也有一定的局限性,如果滥用则会给后续软件框架的扩展和维护带来隐患. 单例模式的实现有很多种,应用场合也各有不同,但必须保证实例唯一,如果是多线程环境则必须保证线程安全.python本身有很多内置特性可以用来实现单例模式的效果,理清每种单例模式的实现原理.优缺点及使用场合才

Python Singleton Pattern(单例模式)

简介 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 当一个类中的静态的值被反复调用时会造成浪费,就可以采用单例模式 实现 原理 示例: class Foo(object): instance = None def __init__(self): pass @classmethod def get_instance(cls, *args, **kwarg

Java模式之单例模式

单例模式是指某个类有唯一的实例.最常见的获取单例的方法有两种:饿汉式和懒汉式. 懒汉式单例模式: public class Single1 { private static Single1 single1; private Single1(){} public static Single1 getInstance(){ if (single1 == null){ single1 = new Single1(); } return single1; }} 懒汉式单例模式,意思是调用getInsta

【jbpm4.4源码阅读笔记】engine的解析与生成

jpbm4.4源码的包结构主要有七个,分为org.jbpm.api;org.jbpm.bpmn;org.jbpm.enterprise.internal;org.jbpm.internal.log;org.jbpm.jpdl.internal;pvm.internal; 简而言之,api为接口,比如service.dao等的接口,bpmn定义了jbpm模型,比如task.end等节点的属性和动作,pvm即工作流虚拟机,是jbpm的核心实现:jpdl则是java process define la

WPF基础到企业应用系列7——深入剖析依赖属性(WPF/Silverlight核心)

一. 摘要 首先圣殿骑士非常高兴这个系列能得到大家的关注和支持.这个系列从七月份開始到如今才第七篇,上一篇公布是在8月2日,掐指一算有二十多天没有继续更新了,最主要原因一来是想把它写好,二来是由于近期几个月在筹备"云计算之旅"系列,所以一再推迟了公布进度. 之前一直都没有想过要录制视频.基本的原因还是怕自己知识有限,从而误导他人,所曾经几次浪曦和51CTO邀请录制视频,我都以工作忙.公司内部培训须要时间和自己有待提高等理由委婉的拒绝了,说实在的.自己也知道自己还有非常多地方有待提高.还