设计模式之单例模式,学习笔记

所谓的单例模式就是说一个对象,我们只去实例化一次,在页面中如果有一个对象是唯一的,那么就可以用单例模式。

var Fn = function(name){
  this.name = name;
};

Fn.prototype.getName = function(){
  return this.name;
};

Fn.getInstrace = (function(){
  var isNew = null;
  return function(name){
    return isNew || (isNew = new Fn(name));
  };
}());

var a = Fn.getInstrace(‘JS‘);
console.log(a.name); //JS
var b = Fn.getInstrace(‘JSSssss‘);
console.log(b.name); //JS
console.log(a===b); //true

因为只需要实例化一次所以后面传的参数是没有用的。

var createDiv = function(html){
  this.html = html;
  this.init();
};
createDiv.prototype.init = function(){
  var div = document.createElement(‘div‘);
  div.innerHTML = this.html;
  document.body.appendChild(div);
};

var dan = (function(){
  var is = null;
  return function(html){
    if(!is){
      return is = new createDiv(html);
    }
  return is;
};
}());

var a = new dan(‘啊啊啊啊啊啊‘);
var b = new dan(‘啊啊啊啊啊啊111‘);
console.log(a===b);

时间: 2024-08-26 06:17:49

设计模式之单例模式,学习笔记的相关文章

初探单例模式学习笔记

一.如何防止一个类产生多个实例呢? 1.不做任何措施,贴出一幅海报,通知所有程序员不能对这个类创建多个实例  (不现实) 2.让这个类无法创建另一个实例    -> 单例模式 二.但是对类进行实例化,它的决定权在类的外部,如何将决定权回归类的自身呢? -> 将构造函数变成private类型  ,不允许外界直接调用构造方法创建实例 三.但我们总要给外界提供一个途径获得类的实例 class T { private T(); public static T getInstance() { retur

[GeekBand] 设计模式之观察者模式学习笔记

本文参考文献::GeekBand课堂内容,授课老师:李建忠 :网络资料: http://blog.csdn.net/hguisu/article/details/7556625 本文仅作为自己的学习笔记,不代表权威,因为是初学,有错误烦请大家指正,谢谢. 1.什么是观察者模式,应用场所有哪些? 观察者模式(有时又被称为发布-订阅Subscribe>模式.模型-视图View>模式.源-收听者Listener>模式或从属者模式)是软件设计模式的一种.在此种模式中,一个目标物件管理所有相依于它

设计模式之单例模式学习(C#)

最近在换工作,发现面试都会问到设计模式中的单例模式,所以回家做了一个对于单例模式的总结,如有问题,请留言指教. 单例模式的简介 单例模式:就是保证系统中只有一个实例,就叫单例模式(singleton pattern); 单例模式分为:饿汉式和懒汉式; 单例模式必须遵循的规则: 1. 该类,在整个系统中必须只能有一个实例; 2. 这个唯一的实例,必须类自行创建这个实例; 3. 必须自行向整个系统提供这个实例; 单例模式具体实现必须遵循的规则: 1. 定义一个静态变量来保存实例; 2. 定义一个私有

设计模式之禅学习笔记

现在比较熟悉的设计模式有: slf4j=>单例模式,工厂模式,门面(外观)模式 工厂模式 vs 抽象工厂模式 工厂模式 接口,接口实现类,工厂类 抽象工厂模式 接口,借口实现类,工厂抽象类,具体的工厂实现类.红色句子是二者唯一的区别 工厂模式 vs 建造者模式 工厂模式是生产整个产品 建造者模式是重点强调建造的过程 模板模式 spring的很多类都应用了这种模式 比如一个抽象类,有很多具体的实现类继承这个抽象类 抽象类跟接口相比,优点是如果在抽象类中添加新的具体实现方法,不会影响之前已经继承的实

[GeekBand] 设计模式——工厂模式学习笔记

 本文参考文献:GeekBand课堂内容,授课老师:李建忠 :大话设计模式 其余的模式方法请自行查看Geekband相关课程,在此不累述. 这周的课题是: 针对DrawingSystem中的基类Shape和各个子类Line.Rec.Circle.为支持更多的形状子类,请使用某种模式来支持灵活地创建它们.使用松耦合面向对象设计方法和思想,可使用伪码表示设计. 课程中提到了四种模式,“工厂方法”.“抽象工厂”.“原型模式”.“构建器”模式.最后聚焦在了“工厂方法”和“抽象工厂”这两种方法,那么第一个

javaScript设计模式---(单例模式学习)

单例模式 一个类只能有一个实例化对象.如页面中的弹出框蒙层,一个页面只需要一个. 实现方式:创建一个类,这个类包含一个方法,这个方法在没有对象存在的情况下,将会创建一个新的实例对象.如果对象存在,这个对象只是返回这个对象的引用. var singleton = (function singleton () { var instance = null; // 存储单例实例的引用 // 创建单例 function init () { // 私有方法和属性 function privateMethod

【设计模式】单例模式学习

一:必要性 无论是在软件还是系统中,有时我们只需要某个东西出现一次,记得老师上课时提到的任务管理器,就是最典型的一个例子,任务管理器能告诉用户现在计算机里正在运行的程序的信息,试想一下如果能打开两个任务管理器,那么同步又是个大问题,虽然这个问题就不是个问题,没人愿意不明不白的看到两个任务管理器,如果有不同也不是用户的关注重点.而在记忆中,早期的windows就能打开很多任务管理器,现在想想这样是不太合理的.就算他们达成了同步一致的要求,那又有什么意义呢,都一样的东西,不过是浪费系统资源罢了.所以

java/android 设计模式学习笔记(一)---单例模式

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对

设计模式--单例模式(学习笔记)

定义:      单例模式:保证一个类只有一个实例,并且提供一个访问它的全局访问点.(<大话设计模式定义>): 单例模式分为两种: 1>饿汉式单例类:自己被加载时就将自己实例化. 例子:       private SingleExample() {           } private static SingleExample singleExample=new SingleExample(); @Override protected SingleExample getInstanc

设计模式:学习笔记(1)——单例模式

Java设计模式之单例模式 引入单例模式 什么是单例模式 对于某些类来说,我们只想其拥有一个实例,并且我们仅仅使用这一个实例:比如说线程池,缓存,对话框,处理偏好设置和注册表的对象.日志对象.显卡等设备的驱动程序的对象.这些类对象只能有一个,如果制造出多个实例,就会导致许多问题的产生.例如:程序的行为异常,资源使用过量或者冲突等等. 单例模式正是可以满足我们需求的设计原则:确保一个类只有一个实例,并提供一个全局访问点. 单例模式的经典实现 实现 理解 ? 首先,我们利用静态变量来记录Single