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