`
fuhao_987
  • 浏览: 63642 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

[笔记二]Essential JavaScript Design Patterns For Beginners

阅读更多
二、 构造模式
利用prototype 来构造自己的函数。
function Car(model,year,miles){
	this.model = model;
	this.year = year;
	this.miles = miles;
}
Car.prototype.toString = function(){
	return this.model + " has done " + this.miles + " miles";
};
var civic = new Car("Honda Civic",2009,20000);
var mondeo = new Car("Ford Mondeo",2010,5000);

console.log(civic.toString());

结果:
Honda Civic has done 20000 miles


一个简单的toString()方法将在所有的Car 对象之间共用。
善用构造函数,用来简单的区分它们与其他的函数


三、 单体模式
在传统的软件工程中,通过创建有一个方法的类来创建类的实例,实现单体模式。使用JavaScript,单体作为一个命名空间提供与全局命名空间隔离的实现代码,从而提供一个功能单一的访问点。
在JS中最简单的一种形式就是——一个对象直接量与它相关的方法和属性。如下:
var mySingeton = {
	prototype1: "something",
	prototype2: "something else",
	method1: function(){
		console.log('hello world');
	}
}

如果你想进一步的扩展,你可以通过封闭变量和函数增加自己的私有成员和方法。只暴露那些你想公有的部分。例如:
var mySingleton = function(){
	/**
	 * here are my private variables and method
	 * */
	var privateVariable = "something private";
	function showPrivate(){
		console.log(privateVariable);
	}
	/**
	 * public variables and methods (which can access private variables and methods)
	 * */
	return {
		publicMethod: function(){
			showPrivate();
		},
		publicVar:"the public can see this!"
	}
}
var single = mySingleton();
single.publicMethod();
console.log(single.publicVar);

结果:
something private
the public can see this!

上面的代码不错了。但是让我们进一步来考虑,如果你只想在当它需要的时候才实例化它这种情况。为了节约资源,你可以把实例化的代码放在另外一个构造函数中,如下:
var Singleton = (function(){
    var instantiated;
    function init(){
	/*singleton code here*/
        return{
		publicMethod: function(){
			console.log('hello world')	      
		},
    		publicProperty:'test'
	}
    }
    return {
    	getInstance: function(){
		if(!instantiated){
			instantiated = init();
		}
		return instantiated;
	}

    }
})()
/*calling public methods is then as easy as:*/
Singleton.getInstance().publicMethod();

结果:
hello world

在实践中,单体模式有什么用处吗?当需要一个对象来协调整个系统的时候,单体是很有用的。最后一个关于单体的例子:
var SingletonTester = (function(){
	function Singleton(args){
		var args = args || {};
		this.name = 'SingletonTester';
		this.pointX = args.pointX || 6;
		this.pointY = args.pointY || 10;
	}
	var instance;
	var _static = {
		name: 'SingletonTestet',
    		getInstance: function(args){
			if(instance === undefined){
				instance = new Singleton(args);
			}
			return instance;
		}
	};
	return _static;
})();
var singletonTest = SingletonTester.getInstance({pointX:5});
console.log(singletonTest.pointX);

结果:
5
分享到:
评论

相关推荐

    Learning JavaScript Design Patterns.pdf

    《Learning JavaScript Design Patterns》是Addy Osmani所著,本书在2016年5月2日保存,涵盖了JavaScript设计模式的相关知识。JavaScript设计模式是一系列被定义为软件设计中常见问题的可重用解决方案。设计模式既令...

    Learning JavaScript Design Patterns - Addy Osmani.pdf

    With Learning JavaScript Design Patterns, you’ll learn how to write beautiful, structured, and maintainable JavaScript by applying classical and modern design patterns to the language. If you want to...

    Packt - Mastering JavaScript Design Patterns, 2nd Edition (Jun 2016)

    True PDF Write reliable code to create powerful applications by mastering advanced JavaScript design patterns

    Essential JavaScript Design Patterns

    ### JavaScript设计模式基础 #### 前言与感谢 本书由Addy Osmani撰写,旨在为初学者介绍JavaScript设计模式的基础知识。作者特别感谢Rebecca Murphey的启发,促使他将这本书开源并免费发布,同时也对技术审稿人...

    Learning JavaScript Design Patterns

    《Learning JavaScript Design Patterns》是一本由Addy Osmani所著,面向专业开发者的JavaScript设计模式书籍。本书主要讨论在JavaScript编程语言中应用经典和现代设计模式的实践。设计模式在软件开发领域被广泛认为...

    Mastering JavaScript Design Patterns

    Mastering JavaScript Design Patterns

    Learning JavaScript Design Patterns 英文原版.js设计模式

    If you want to write beautiful, structured, and maintainable JavaScript code, this guide shows you how to apply both classical and modern design patterns to the language. The patterns in this book ...

    Implementing.Cloud.Design.Patterns.for.AWS

    Title: Implementing Cloud Design Patterns for AWS Author: Marcus Young Length: 234 pages Edition: 1 Language: English Publisher: Packt Publishing Publication Date: 2015-05-15 ISBN-10: 1782177345 ISBN-...

    Design Patterns for Embedded Systems in C

    本书《Design Patterns for Embedded Systems in C》作为嵌入式软件工程工具箱,作者Bruce Powell Douglass博士基于丰富的嵌入式软件工程经验,详细介绍了在嵌入式系统编程中使用C语言时可以运用的设计模式。...

    pro javascript design patterns

    《Pro JavaScript设计模式》是一本深入探讨JavaScript设计模式的专业书籍,由Ross Harmes和Dustin Diaz共同撰写。这本书旨在帮助开发者理解和应用各种设计模式来优化和改进他们的JavaScript代码,提高代码的可读性、...

    Pro JavaScript Design Patterns_with_code

    "Pro JavaScript Design Patterns_with_code"这个资源显然包含了关于JavaScript设计模式的专业知识,并且附带了实际的代码示例,这对于深入理解和应用这些模式非常有帮助。 首先,我们需要了解设计模式的基本概念。...

    Implementing Cloud Design Patterns for AWS 01

    mobi 格式 Implementing Cloud Design Patterns for AWS 01 Implementing Cloud Design Patterns for AWS 01

    Learning JavaScript Design Patterns V1.7.0.pdf

    Learning JavaScript Design Patterns V1.7.0. pdf 这是一本通过Javascript语言来阐述设计模式的书籍。 前面讲解的Javascript特性以及面向对象思想还是很有意思的。 由于Javascrip中的设计模式大都源自Java,所以...

    Javascript Design Patterns

    本书《Learning JavaScript Design Patterns》由Addy Osmani编写,旨在系统地介绍JavaScript设计模式的相关知识。 #### 什么是设计模式? 设计模式是一种在特定上下文中用来解决常见问题的方案。它描述了一个问题...

Global site tag (gtag.js) - Google Analytics