《JavaScript设计模式》读书笔记——Day3

一上来写了一个200多行快300行的demo。。结果给我报错,调试半天也没弄好,哎。。

先把这个享元模式说了吧~大概的意思就是说当几个对象之间有相同的动作的时候,一个一个去创建那么必定会造成大量的占据内存,将它们共有的方法提取出来,共享一个对象,这样就节约了内存,提高了响应的速度啦,来,上栗子!

// 享元动作
var FlyWeight = {
    moveX : function ( x ) {
        this.x = x;
    },
    moveY : function ( y ) {
        this.y = y;
    }
};
// 人物移动方法
var Player = function ( x ,y ,c ) {
    this.x = x;
    this.y = y;
    this.color = c;
};
Player.prototype = FlyWeight;
Player.prototype.changeC = function ( c ) {
      this.color = c;
};
// 精灵移动方法
var Spirit = function ( x ,y ,r ) {
    this.x = x;
    this.y = y;
    this.r = r;
};
Spirit.prototype = FlyWeight;
Spirit.prototype.changeR = function ( r ) {
    this.r = r;
};
// 创建人物
var player = new Player( 5 , 6 , ‘red‘ );
console.log ( player );
player.moveX( 6 );
player.moveY( 5 );
// 创建精灵
var spirit = new Spirit( 7 , 5 , 5 );
console.log (spirit );
spirit.moveX( 6 );
spirit.moveY( 5 );
spirit.changeR( 5 );

其中人物移动和精灵移动的prototype都指向了FlyWeight这个对象,这就是享元对象的模式,让他们的prototype都指向同一个对象。

接下来就是第四篇了。。越来越难理解啦...

时间: 2024-09-29 10:17:12

《JavaScript设计模式》读书笔记——Day3的相关文章

JavaScript设计模式:读书笔记(未完)

该篇随我读书的进度持续更新阅读书目:<JavaScript设计模式> 2016/3/30 2016/3/31 2016/3/30: 模式是一种可复用的解决方案,可用于解决软件设计中遇到的常见问题./将解决问题的方法制作成模板,并且这些模板可应用于多种不同的情况.有效模式的附加要求:适合性,实用性,适用性. 模式的优点: 防止局部问题引起大问题,模式让我们的代码更有组织性 模式通常是通用的解决方式,不管我们开发哪种应用程序,都可以用模式优化我们代码的结构 模式确实可以让我们避免代码复用,使代码更

大话设计模式读书笔记2——策略模式

策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类直接的耦合. UML 图: 根据<大话设计模式>——第二章 商场促销这个案例代码来简单的记录一下策略模式的使用方式: /// <summary> /// 现金收费抽象类 /// </summary> public abstract class CashSuper { /// <summary> ///

大话设计模式读书笔记1——简单工厂模式

最近几日,重温了一下<大话设计模式>这本书,当时读的仓促,有很多没有注意的地方,现在仔细翻看起来,发现这值得细细品味的一本书!! 好东西就要记下来!!! 第一章笔记:从一个简单的计算器程序来看简单工厂模式. 变化的地方就要封装,用一个单独的类来做创造实例的过程这就是工厂. UML图: /// <summary> /// 运算类 /// </summary> public class Operation { public double Number1 { get; set

《编写可维护的javascript》读书笔记(中)——编程实践

上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. 二.编程实践 1.UI松耦合 第一.将css从javascript中抽离(要改变dom样式数据,应该去操作dom的class名而非dom的style属性,后续要修改此样式只需到对应的css文件中修改而不用修改js文件): 第二.将javascript从HTML中抽离,比如下面的写法是不好的 <!-- 不

大话设计模式读书笔记2——单例模式

单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 我们来看一下单例模式下的饿汉模式代码: /// <summary> /// 饿汉模式 /// </summary> public class Singleton { //私有的构造器 private Singleton() {

设计模式读书笔记:SINGLETON(单件模式)

意图: 保证一个类仅有一个实例,并提供一个访问它的全局访问点 类图: 注意: 1.静态成员变量及静态成员方法 2.使用惰性初始化,它的返回值直到被第一次访问时才创建和保存 3.构造器是受保护的,试图直接实例化Singleton将得到一个编译时的错误信息 实现: class Singleton { public: virtual ~Singleton() {} static Singleton *getInstance(void) { if (_instance == 0) _instance =

JavaScript设计模式学习笔记

1 JavaScript设计模式深入分析 私有属性和方法:函数有作用域,在函数内用var 关键字声明的变量在外部无法访问,私有属性和方法本质就是你希望在对象外部无法访问的变量. 特权属性和方法:创建属性和方法时使用的this关键字,因为这些方法定义在构造器的作用域中,所以它们可以访问到私有属性和方法;只有那些需要直接访问私有成员的方法才应该被设计为特权方法. 共有属性和方法:直接链在prototype上的属性和方法,不可以访问构造器内的私有成员,可以访问特权成员,子类会继承所有的共有方法. 共有

Javascript面向对象之三单例模式-《javascript设计模式》笔记

1.单例模式概述源自百度百科对于单例模式的定义:单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 在javascript的世界里,其实没有严格的对象和类定义,“一切皆对象”使得javascript中都是对象,不能像java,c++或者php使用特定的方法返回一个实例来实现,因此对javascript来说,我们要创造的是一个“不能被多次实例化的”对象,也就是说只能实例化一次的对象. 2.简单单例模式:只能实例化一次的对象也

JavaScript模式读书笔记 第7章 设计模式

1,单例模式 -1,最简单的单例: <script> //obj为单例 var obj = { myProp: "My Value" }; var obj1 = obj; var obj2 = obj; console.log(obj1 == obj2);//true console.log(obj1 === obj2);//true   </script> -2,静态属性中的实例:  <script> function Universe(){ if