2013-11-28 veryyoung
观察者模式很好理解,类似于邮件订阅和RSS订阅. 当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。 其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化! 对象之间是一种一对多的关系。先来看看关系图: 我解释下这些类的作用:SubjectClient类就是我们的主对象,Observer1和Observer2是依赖于AbstactSubject的对象,当AbstactSubject变化时,Observer1和Observer2必然变化。AbstractSubject类中定义着需要监控的对象列表,可以对其进行修改:增加或删除被监控对 继续阅读 »
2017-03-04 高悦翔
前两章介绍基础, 没什么笔记好记录. 这是第三章. 什么是对象 在JavaScript中, 除了简单数据类型(数字, 字符串, 布尔值, null和undefined), 其他所有的值都是对象Object. 其中number string和boolean虽然拥有方法, 但他们并不是object, 因为他们是不可变的. 继续阅读 »
2016-09-19 曹强
Javascript语言的设计不够严谨,很多地方一不小心就会出错。 举例来说,请考虑以下情况。 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。用自然语言描述的算法如下: javascript if (myObj不存在){ 声明myObj; } 你可能会觉得,写出这段代码很容易。但是实际上,它涉及的语法问题,远比我们想象的复杂。Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法。只有对Javascript语言的实现细节非常清楚,才可能分得清它们的区别。 more 第一种写法 根据直觉,你可能觉得可以这样写: javascript if (!myObj) 继续阅读 »
2016-09-10 曹强
前言 命名、抽象、标识是通用设计结构的主要方面,这些设计结构能被用于构造可复用的面向对象设计。设计模式确定所包含的类和实例、它们的角色、协作方式以及职责分配。 每一种设计模式都重点关注一个特定的对象设计问题或者设计要点,描述何时使用它,在另一些约束条件下是否还能使用,以及使用的效果和利弊。由于我们最终要实现设计,设计模式还是提供了示例,代码来阐明其实现。 虽然设计模式描述的是面向对象设计,但是他们都是基于实际的解决方案。这些设计方案的实现语言是主流面向对象的编程语言。 more 设计模式的分类 创建型设计模式 创建型设计模式专注于处理对象创建机制,以适合给定情况下的方式来创建对象,创建对象的基本方法都可能导致项目复杂性增 继续阅读 »
2016-10-12 曹强
中介者模式的作用就是解除对象与对象之间的紧耦合关系。增加一个中介者对象后,所有的相关对象都可以通过中介者对象来通信,而不是相互引用,所以当一个对象发生改变时,只需要通知中介者对象即可。中介者模式使网状的多对多关系变成了相对简单的一对多关系。 中介者模式的例子--购买商品 假如我们正在编写一个手机购买的页面,在购买流程中,可以选择手机的颜色以及输入购买数量,同时页面中有两个展示区域,分别向用户展示选择好的颜色和数量。 show the code: var colorSelect = document.getElemmentById('colorSelect'), numberInput= document.getEl 继续阅读 »
2016-10-12 曹强
发布—订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。在JavaScript开发中,我们一般用事件模型来替代传统的发布—订阅模式。 发布—订阅模式可以广泛应用于异步编程中,这是一种替代传递回调函数的方案。比如,我们可以订阅ajax 请求的error、succ 等事件。 或者如果想在动画的每一帧完成之后做一些事情,那我们可以订阅一个事件,然后在动画的每一帧完成之后发布这个事件。在异步编程中使用发布—订阅模式,我们就无需过多关注对象在异步运行期间的内部状态,而只需要订阅感兴趣的事件发生点。 发布—订阅模式可以取代对象之间硬编码的通知机制,一个对象不用再显式地调用 继续阅读 »
2017-10-09 wilsonIs
使用object对象来设置pdf文件的加载,兼容IE、Chrome、Firefox。 可以在data属性中设置文件的默认参数,如下文件中所示,来设置pdf阅读的初始状态。代码如下所示: 继续阅读 »
2016-04-29 zzyhappyzzy
iOS
strong、weak、unsafe_unretained、autoreleasing、copy说明 strong 指针的默认类型。该指针指向的对象在指针存活期间一直存在,不会被销毁。 weak 当没有strong指针指向对象时,weak指针指向的对象将被销毁,同时weak指针为变为nil。 unsafe_unretained 该指针指向的对象销毁时,该指针不会被置为nil,而是被挂起(类似野指针)。最好别用 autoreleasing 一般指向函数的参数类型为id *并且自动释放的参数。 copy 类似strong,但是会复制一份新的对象(即指向新的内存地址),新指向的对象存活期同strong。 参考链接 Apple 继续阅读 »
2016-07-31 曹强
原型链继承 让构造函数的原型对象等于另一个类型的实例,利用原型让一个引用类型继承另一个引用类型的属性和方法 ``` function SuperType() { this.property=true; } SuperType.prototype.getSuperValue=function(){ return this.property; }; function SubType() { this.subProperty=false; } //继承SuperType SubType.prototype=new SuperType(); SubType.prototype.getSubValue=f 继续阅读 »
2014-06-16 summer
jpa
再JPA小例子中,提到了什么托管、什么游离状态,弄得我一头雾水,具体google了一下顿时明白了。 JPA中bean有四种状态:新建、托管、游离、删除。 当new Person();对象是处于新建状态; 当使用em.getTransaction().begin();开启事物后,执行下面的代码 继续阅读 »