状态模式
摘要:状态模式和策略模式很像,他们都为变化设计了一个抽象类,然后派生出一系列的子类,用一个属性保存对这个子类的引用,通常通过构造函数对这个属性初始化,然后在类中一直调用这个属性的相关方法进行操作。然后他们都通过改变这个属性的值,将它指向其它子类,从而改变超类的方法的表现。区别在于策略模式的set()...
阅读全文
posted @
2008-09-24 17:41
真阿当
阅读(110)
推荐(0)
状态模式
摘要:状态模式和策略模式很像,他们都为变化设计了一个抽象类,然后派生出一系列的子类,用一个属性保存对这个子类的引用,通常通过构造函数对这个属性初始化,然后在类中一直调用这个属性的相关方法进行操作。然后他们都通过改变这个属性的值,将它指向其它子类,从而改变超类的方法的表现。区别在于策略模式的set()...
阅读全文
posted @
2008-09-24 17:41
真阿当
阅读(123)
推荐(0)
工厂方法模式
摘要:工厂方法模式一个很关键的东西就是工厂方法!如果我们的对象具体要实化哪一个类不确定,但是这个对象一定会在接下来的流程中实现某些方法,我们可以用工厂方法来返回一个对象,然后对这个对象来引用它的方法。其实工厂方法是个抽象方法,在超类中并不会真的去实现,那么工厂方法在超类中其实只算是一个抽象的对象,它...
阅读全文
posted @
2008-09-24 14:42
真阿当
阅读(118)
推荐(0)
工厂方法模式
摘要:工厂方法模式一个很关键的东西就是工厂方法!如果我们的对象具体要实化哪一个类不确定,但是这个对象一定会在接下来的流程中实现某些方法,我们可以用工厂方法来返回一个对象,然后对这个对象来引用它的方法。其实工厂方法是个抽象方法,在超类中并不会真的去实现,那么工厂方法在超类中其实只算是一个抽象的对象,它...
阅读全文
posted @
2008-09-24 14:42
真阿当
阅读(106)
推荐(0)
中介者模式
摘要:中介者模式其实是在两个对象之间建立一个中间对象,两个对象都只认识中间对象,两个对象之间的通信完全通过中间对象实现,它们互相不认识,从而让两个对象之间解耦。具体来说,两个对象的构造函数都需要传入中介者对象,然后,两个对象中的通信方法其实都是对中介对象通信方法的调用。中介对象的通信方法要负责所有的逻辑...
阅读全文
posted @
2008-09-18 15:08
真阿当
阅读(103)
推荐(0)
中介者模式
摘要:中介者模式其实是在两个对象之间建立一个中间对象,两个对象都只认识中间对象,两个对象之间的通信完全通过中间对象实现,它们互相不认识,从而让两个对象之间解耦。具体来说,两个对象的构造函数都需要传入中介者对象,然后,两个对象中的通信方法其实都是对中介对象通信方法的调用。中介对象的通信方法要负责所有的逻辑...
阅读全文
posted @
2008-09-18 15:08
真阿当
阅读(104)
推荐(0)
职责链模式
摘要:职责链模式:使多个对象都有机会处理请求,从而避免请求发送者和接收者之间的耦合关系。将接收对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。当客户提交一个请求时,请求一定是从链的开始处提交,但是具体到链的哪一个环节进行处理,客户并不知道。且链中的对象也并不知道链的结构。结果是职责链可...
阅读全文
posted @
2008-09-18 14:46
真阿当
阅读(102)
推荐(0)
职责链模式
摘要:职责链模式:使多个对象都有机会处理请求,从而避免请求发送者和接收者之间的耦合关系。将接收对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。当客户提交一个请求时,请求一定是从链的开始处提交,但是具体到链的哪一个环节进行处理,客户并不知道。且链中的对象也并不知道链的结构。结果是职责链可...
阅读全文
posted @
2008-09-18 14:46
真阿当
阅读(91)
推荐(0)
命令模式
摘要:命令模式中有三个角色,第一个是命令的执行者,这个类中定义好各种方法,只负责做事情(根据传递过来的命令调用不同方法完成操作),是个典型的model,本身并不加任何control的逻辑。第二个角色是命令。命令类会有一个抽象的接口,这个接口派生出一个个具体的命令类,每个具体命令类只负责一个逻辑,它的构造...
阅读全文
posted @
2008-09-18 14:08
真阿当
阅读(97)
推荐(0)
命令模式
摘要:命令模式中有三个角色,第一个是命令的执行者,这个类中定义好各种方法,只负责做事情(根据传递过来的命令调用不同方法完成操作),是个典型的model,本身并不加任何control的逻辑。第二个角色是命令。命令类会有一个抽象的接口,这个接口派生出一个个具体的命令类,每个具体命令类只负责一个逻辑,它的构造...
阅读全文
posted @
2008-09-18 14:08
真阿当
阅读(105)
推荐(0)
桥接模式
摘要:如果实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。在发现我们需要多角度去分类实现对象,而只用继承会造成大量类的增加,不能满足开发——封闭原则时,就应该要考虑桥接模式了。 桥接模式中分把系统中的角色按照不同角度去抽象成多个类,每个角...
阅读全文
posted @
2008-09-18 12:02
真阿当
阅读(138)
推荐(0)
单例模式
摘要:如果想要一个全局统一的对象,可以把这个对象设为全局变量。如果想要实现一个类只能实例化一次,那么就需要用到单例模式了。单例模式就是将单例类的构造函数设为私有,然后通过设置一个静态方法,静态方法中对这个类是否实例化做判断,如果没有实例化过,就new一个单例类的实例,然后做为这个静态方法的返回值返回。因...
阅读全文
posted @
2008-09-18 11:26
真阿当
阅读(104)
推荐(0)
单例模式
摘要:如果想要一个全局统一的对象,可以把这个对象设为全局变量。如果想要实现一个类只能实例化一次,那么就需要用到单例模式了。单例模式就是将单例类的构造函数设为私有,然后通过设置一个静态方法,静态方法中对这个类是否实例化做判断,如果没有实例化过,就new一个单例类的实例,然后做为这个静态方法的返回值返回。因...
阅读全文
posted @
2008-09-18 11:26
真阿当
阅读(119)
推荐(0)
备忘录模式(存档模式)
摘要:备忘录模式中有三个角色:备忘对象,备忘记录,备忘记录箱。备忘对象有备份方法和还原备份方法,其中备份方法要调用备忘记录类的构造函数,将备忘对象中需要保存的属性做为参数传进去,返回备忘记录类的实例。而备忘对象的备份方法是由备忘记录箱类的记录方法来调用的,备忘记录箱类用一个数组型的属性保存备忘对象类的备...
阅读全文
posted @
2008-09-18 09:59
真阿当
阅读(178)
推荐(0)
备忘录模式(存档模式)
摘要:备忘录模式中有三个角色:备忘对象,备忘记录,备忘记录箱。备忘对象有备份方法和还原备份方法,其中备份方法要调用备忘记录类的构造函数,将备忘对象中需要保存的属性做为参数传进去,返回备忘记录类的实例。而备忘对象的备份方法是由备忘记录箱类的记录方法来调用的,备忘记录箱类用一个数组型的属性保存备忘对象类的备...
阅读全文
posted @
2008-09-18 09:59
真阿当
阅读(167)
推荐(0)
适配器模式
摘要:适配器模式中有三个角色,一个是目标类,一个是原始类,还有一个是适配器类。原始类和目标类接口是不一样的,如果我们想让原始类实现目标类的接口,同时不改变原始类的话,就可以通过适配器类做到。 适配器类定义和目标类一样的接口,也就是方法,如此一来,表面看起来就和目标类的用法一致,然后在适配器类的方法...
阅读全文
posted @
2008-09-17 19:11
真阿当
阅读(116)
推荐(0)
适配器模式
摘要:适配器模式中有三个角色,一个是目标类,一个是原始类,还有一个是适配器类。原始类和目标类接口是不一样的,如果我们想让原始类实现目标类的接口,同时不改变原始类的话,就可以通过适配器类做到。 适配器类定义和目标类一样的接口,也就是方法,如此一来,表面看起来就和目标类的用法一致,然后在适配器类的方法...
阅读全文
posted @
2008-09-17 19:11
真阿当
阅读(104)
推荐(0)
观察者模式
摘要:当一个对象的改变需要同时改变其它多个对象,特别是不知道具体有多少对象时,可以考虑使用观察者模式。 观察者模式中有两个角色,一个是通知者,一个是被通知者。通知者类必须有三个方法,添加被通知者方法,删除被通知者方法,通知方法,必须有一个属性,用于保存通知者,通常是个数组类型。添加和删除方法直接对数组...
阅读全文
posted @
2008-09-17 18:19
真阿当
阅读(122)
推荐(0)
观察者模式
摘要:当一个对象的改变需要同时改变其它多个对象,特别是不知道具体有多少对象时,可以考虑使用观察者模式。 观察者模式中有两个角色,一个是通知者,一个是被通知者。通知者类必须有三个方法,添加被通知者方法,删除被通知者方法,通知方法,必须有一个属性,用于保存通知者,通常是个数组类型。添加和删除方法直接对数组...
阅读全文
posted @
2008-09-17 18:19
真阿当
阅读(85)
推荐(0)
建造者模式
摘要:建造者模式主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。 技术上,建造者模式就是通过定义一个接口,接口中完整地写好了这个类应该存在的属性和方法,让所有的子类强制性地去实现这些属性和方法,从而把握住类的主体大纲,让每个子类都一定不...
阅读全文
posted @
2008-09-17 12:15
真阿当
阅读(106)
推荐(0)
建造者模式
摘要:建造者模式主要是用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。 技术上,建造者模式就是通过定义一个接口,接口中完整地写好了这个类应该存在的属性和方法,让所有的子类强制性地去实现这些属性和方法,从而把握住类的主体大纲,让每个子类都一定不...
阅读全文
posted @
2008-09-17 12:15
真阿当
阅读(102)
推荐(0)
外观模式
摘要:外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 技术上,外观模式就是在底层的子系统之上增加一层,这一层提供简单的接口,内部是对子系统的调用。 外观模式的根本思想其实也是“接口”,把复杂的子系统操作封装在简单的对外接口上,直接和应用...
阅读全文
posted @
2008-09-17 11:38
真阿当
阅读(88)
推荐(0)
外观模式
摘要:外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 技术上,外观模式就是在底层的子系统之上增加一层,这一层提供简单的接口,内部是对子系统的调用。 外观模式的根本思想其实也是“接口”,把复杂的子系统操作封装在简单的对外接口上,直接和应用...
阅读全文
posted @
2008-09-17 11:38
真阿当
阅读(105)
推荐(0)
模板方法模式
摘要:模板方法模式是把不变行为搬到超类,从而去除子类的重复代码。至于需要变动的行为,通过多态,在子类中覆盖掉超类的同名方法。这种方法其实是最常用的oo方法,我们经常会这样来设计超类和子类。问题是,我们在前面讲过,子类必须能完全代替父类,要倒转依赖。如果在子类中重载超类同名方法,不是违背了这个原则吗?...
阅读全文
posted @
2008-09-16 16:11
真阿当
阅读(116)
推荐(0)
模板方法模式
摘要:模板方法模式是把不变行为搬到超类,从而去除子类的重复代码。至于需要变动的行为,通过多态,在子类中覆盖掉超类的同名方法。这种方法其实是最常用的oo方法,我们经常会这样来设计超类和子类。问题是,我们在前面讲过,子类必须能完全代替父类,要倒转依赖。如果在子类中重载超类同名方法,不是违背了这个原则吗?...
阅读全文
posted @
2008-09-16 16:11
真阿当
阅读(102)
推荐(0)
代理模式
摘要:代理模式在实现上就是定义一个接口,实体和代理都实现这个接口,然后在代理的构造函数中实例化一个实体的对象,在代理类的方法中调用实体的同名方法。
阅读全文
posted @
2008-09-16 11:31
真阿当
阅读(101)
推荐(0)
代理模式
摘要:代理模式在实现上就是定义一个接口,实体和代理都实现这个接口,然后在代理的构造函数中实例化一个实体的对象,在代理类的方法中调用实体的同名方法。
阅读全文
posted @
2008-09-16 11:31
真阿当
阅读(84)
推荐(0)
装饰者模式
摘要:装饰者模式适用于往对象上动态地添加方法和属性,当方法和属性花样很多,又需要根据实际情况动态地修改的时候,可以选用这种模式。具体实现方法其实和attatchOnload的思想一样,模式类里需要接收一个参数,这个参数是添加这个类之前的对象,先调用参数对象中的方法,然后在后面添加这个类里的新方法。fun...
阅读全文
posted @
2008-09-16 11:17
真阿当
阅读(99)
推荐(0)
装饰者模式
摘要:装饰者模式适用于往对象上动态地添加方法和属性,当方法和属性花样很多,又需要根据实际情况动态地修改的时候,可以选用这种模式。具体实现方法其实和attatchOnload的思想一样,模式类里需要接收一个参数,这个参数是添加这个类之前的对象,先调用参数对象中的方法,然后在后面添加这个类里的新方法。fun...
阅读全文
posted @
2008-09-16 11:17
真阿当
阅读(96)
推荐(0)
关于display:inline-block
摘要:display:inline-block是个很有用的css属性。块级元素可以自由控制长宽,可是如果不浮动会独占一行,而一旦浮动,又会带来一系列的其它问题需要考虑,这就在一定程度上限制了对块级元素的使用。行内元素可以很自然地在一行内显示内容,只是长宽是无法随意设置的,这也限制了行内元素的使用。举个简...
阅读全文
posted @
2008-09-12 11:16
真阿当
阅读(188)
推荐(0)
关于display:inline-block
摘要:display:inline-block是个很有用的css属性。块级元素可以自由控制长宽,可是如果不浮动会独占一行,而一旦浮动,又会带来一系列的其它问题需要考虑,这就在一定程度上限制了对块级元素的使用。行内元素可以很自然地在一行内显示内容,只是长宽是无法随意设置的,这也限制了行内元素的使用。举个简...
阅读全文
posted @
2008-09-12 11:16
真阿当
阅读(131)
推荐(0)
设计模式心得笔记--简单工厂和策略模式
摘要:《大话设计模式》一书中对策略模式的讲解虽然很清楚,但我觉得其实有一点很关键的东西没有讲。策略模式和工厂模式非常的想像,他们都会把分支变成一个个单独的分支类,然后把分支类在主程序流程中赋给一个变量,然后再对这个变量使用方法(这个方法是所有分支类都提供的共同方法),从而将变化封装起来。区别是,在工...
阅读全文
posted @
2008-09-11 17:41
真阿当
阅读(105)
推荐(0)
设计模式心得笔记--简单工厂和策略模式
摘要:《大话设计模式》一书中对策略模式的讲解虽然很清楚,但我觉得其实有一点很关键的东西没有讲。策略模式和工厂模式非常的想像,他们都会把分支变成一个个单独的分支类,然后把分支类在主程序流程中赋给一个变量,然后再对这个变量使用方法(这个方法是所有分支类都提供的共同方法),从而将变化封装起来。区别是,在工...
阅读全文
posted @
2008-09-11 17:41
真阿当
阅读(102)
推荐(0)
读《大话设计模式》和《head first 设计模式》心得
摘要:1.面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。2.如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。就一个类而言,应该仅有一个引起它变化的原因。3.开放-封闭原则是面向对象设计的核心所在。遵循这个原则...
阅读全文
posted @
2008-09-11 16:35
真阿当
阅读(212)
推荐(0)
读《大话设计模式》和《head first 设计模式》心得
摘要:1.面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。2.如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。就一个类而言,应该仅有一个引起它变化的原因。3.开放-封闭原则是面向对象设计的核心所在。遵循这个原则...
阅读全文
posted @
2008-09-11 16:35
真阿当
阅读(311)
推荐(0)
设计模式心得笔记--简单工厂
摘要:说到简单工厂,就不得不说到switch,其实简单工厂的关键,是把分支从主类的流程中分离出去,单独变成一个一个分散的类,然后把switch放到主类的实例化中去,不同的分支从一开始就实例化了不同的对象,这个对象只管这个对象自己的行为。这样,我们就可以多创造不同的分支类,然后在实例化的时候,多提供一...
阅读全文
posted @
2008-09-11 16:16
真阿当
阅读(104)
推荐(0)
设计模式心得笔记--简单工厂
摘要:说到简单工厂,就不得不说到switch,其实简单工厂的关键,是把分支从主类的流程中分离出去,单独变成一个一个分散的类,然后把switch放到主类的实例化中去,不同的分支从一开始就实例化了不同的对象,这个对象只管这个对象自己的行为。这样,我们就可以多创造不同的分支类,然后在实例化的时候,多提供一...
阅读全文
posted @
2008-09-11 16:16
真阿当
阅读(99)
推荐(0)
css,用一张大图片来设置背景的技术真相
摘要:之前就知道了用一张图片来设置页面内的所有背景的技术。原理很简单,利用background-potision精确地定位到图片的位置。好处是减少页面的http请求数。 老实说,我并不觉得这个技术有多值得推广。虽然是减少了http请求数,但对于99%的网站来说,这个改进基本是看不见的。除了超一流的...
阅读全文
posted @
2008-09-05 15:26
真阿当
阅读(203)
推荐(0)
css,用一张大图片来设置背景的技术真相
摘要:之前就知道了用一张图片来设置页面内的所有背景的技术。原理很简单,利用background-potision精确地定位到图片的位置。好处是减少页面的http请求数。 老实说,我并不觉得这个技术有多值得推广。虽然是减少了http请求数,但对于99%的网站来说,这个改进基本是看不见的。除了超一流的...
阅读全文
posted @
2008-09-05 15:26
真阿当
阅读(239)
推荐(0)