2011年1月25日星期二
设计模式学习笔记之三工厂方法模式
工厂方法模式的含义是,为对象的创建定义一个接口,并将由子类来决定如何创建该对象。工厂方法在创建具有平行类结构层次的对象时比较合适。比如工厂有很多种,产品也有很多种,彼此平行。A工厂创建A对象,B工厂创建B对象。其中,A、B工厂的创建方式是一致的,所以AB工厂类会继承自同一个抽象工厂类。A、B产品也是类似的,但是又具体不同,所以A、B产品也实现相同的接口。这种A-B工厂、A-B产品的类层次就称之为平行类结构层次。
2011年1月23日星期日
设计模式学习笔记之二修饰器模式
修饰器模式:能够动态透明的给一个类增加行为。修饰器模式中存在两大阵营,一边是被修饰的对象,一边是修饰器本身,正如房子和粉刷匠的关系。粉刷匠(修饰器)给房子增加了不同外观,看上去像是变了一个样一样。在修饰器模式中,修饰器和修饰对象都继承或实现同一个接口,但区别在于,修饰器持有一个对修饰对象的引用。
java中修饰器最典型的例子莫过于IO流。以输入流InputStream为例,修饰对象如FileInputStream、ByteArrayInputStream,StringBufferInputStream,修饰器为FilterInputStream的子类。FilterInputStream持有一个InputStream,以便能够在其基础上改变其行为。
java中修饰器最典型的例子莫过于IO流。以输入流InputStream为例,修饰对象如FileInputStream、ByteArrayInputStream,StringBufferInputStream,修饰器为FilterInputStream的子类。FilterInputStream持有一个InputStream,以便能够在其基础上改变其行为。
2011年1月22日星期六
设计模式学习笔记之一观察者模式
观察者模式的定义:当被观察的对象状态发生改变时,被观察者将逐一通知观察者,告知观察者其状态发生了改变。生活中常见的例子诸如订阅报纸杂志、在Twitter上关注一个人等。以在Twitter上关注某人为例,点击Twitter的Follow按钮时,表示将自己注册为某人的一个观察者,此时,被观察的就是被关注的那个人,相关类图如下:
观察者接口 主题接口
| |
| |
| |
| |
用户自身-------------------关注---------->被Follow的用户
java内置的API中已经有对观察者模式的实现,即Observable对象和Observer接口。要使用Java API实现观察者模式只需:
1. 被观察的对象继承Obervable对象,并实现自己的业务方法。
2. 观察者实现Observer接口即可。 观察者通过调用被观察者的方来来注册自己到观察者列表中去,从而让被观察者持有观察者的引用,当被观察者发生改变时,能够通过该引用通知观察者。
Java里的观察者模式随处可见,典型的例子比如swing里面的事件。其中,事件源比如按钮、窗体等就是被观察者,而实现监听接口的类即为观察者。调用按钮或者窗体的addListener方法即为注册观察者。
观察者接口 主题接口
| |
| |
| |
| |
用户自身-------------------关注---------->被Follow的用户
java内置的API中已经有对观察者模式的实现,即Observable对象和Observer接口。要使用Java API实现观察者模式只需:
1. 被观察的对象继承Obervable对象,并实现自己的业务方法。
2. 观察者实现Observer接口即可。 观察者通过调用被观察者的方来来注册自己到观察者列表中去,从而让被观察者持有观察者的引用,当被观察者发生改变时,能够通过该引用通知观察者。
Java里的观察者模式随处可见,典型的例子比如swing里面的事件。其中,事件源比如按钮、窗体等就是被观察者,而实现监听接口的类即为观察者。调用按钮或者窗体的addListener方法即为注册观察者。
2011年1月7日星期五
gVim使用技巧:有用操作
一些有用的gVim使用小技巧:
1. 分割窗口 Ctrl+w, 然后再按s
2. 退出窗口分割: Ctrl+w,然后按q
3. 自动补全: Ctrl+n
4. 文件比较:打开一个文件后,输入命令: vertical diffsplit 要比较的文件名 回车。此时,vim会打开两个垂直分割的窗口,然后就可以进行文件的比较与合并了。
5. 浏览源码文件(java,c,python等),安装taglist插件,然后输入命令:Tlist 即可
6. 对于常写技术博客的人一个非常有用的插件tohtml,可以把任何的文本格式转为html,便于在博客发布,一般gVim默认自带了该插件,使用方式如下:
TOhtml 即可,命名执行完后会打开一个垂直分割的窗口,里面是转好的内容。
7. 统计符合条件的字符串出现的次数,采用替换命令实现:%s/搜索内容/&/gn 即可。解释如下:% 为全文搜索、s为替换命令、&表示替换内容本身,即统计后内容不变、gn表示全行搜索
1. 分割窗口 Ctrl+w, 然后再按s
2. 退出窗口分割: Ctrl+w,然后按q
3. 自动补全: Ctrl+n
4. 文件比较:打开一个文件后,输入命令: vertical diffsplit 要比较的文件名 回车。此时,vim会打开两个垂直分割的窗口,然后就可以进行文件的比较与合并了。
5. 浏览源码文件(java,c,python等),安装taglist插件,然后输入命令:Tlist 即可
6. 对于常写技术博客的人一个非常有用的插件tohtml,可以把任何的文本格式转为html,便于在博客发布,一般gVim默认自带了该插件,使用方式如下:
TOhtml 即可,命名执行完后会打开一个垂直分割的窗口,里面是转好的内容。
7. 统计符合条件的字符串出现的次数,采用替换命令实现:%s/搜索内容/&/gn 即可。解释如下:% 为全文搜索、s为替换命令、&表示替换内容本身,即统计后内容不变、gn表示全行搜索
订阅:
博文 (Atom)