设计模式(二)之观察者模式
Dreamer 发布于 2014-07-07 收录于 编程手册 预计阅读 6 分钟
生活中的观察者模式 例如一个订阅者A在某出版社订阅了一份一年期的xxxx报纸,那么出版社每次出版新版本的报纸的时候就会给订阅者A送过去,另外一个订阅者B也在该出版社订阅一份半年期的xxxx报纸,同样的出版社出版新报纸后也会给订阅者B送过去,半年时间过去了由于订阅者B没有续订,那么出版社不会在给B送报纸。 在上面这个过程中出版社和订阅者A,B其实就是一种观察者模式,订阅者A,B(观察者)先在出版社(主题)登记订阅报纸成为订阅者(观察者对象),然后出版社(主题)的状态(报纸)一旦更新就会给订阅者A,B(观察者)送过去,观察者必须要注册成为主题的观察者对象之后,主题对象的状态发生变化才能通知到所有观察者,(就好比你不去出版社告诉你需要订阅报纸,出版社有新报纸出版的时候是不会给你送去的,因为根本不知道给谁送)。半年后订阅者B(观察者)订阅时间到期不再续订,那么出版社(主题)就取消用户B(观察者)的订阅,将订阅者从被订阅者中移除! 观察者模式的定义 观察者模式(有时又被称为发布-订阅Subscribe>模式、模型-视图View>模式、源-收听者Listener>模式或从属者模式)是软件设计模式中的一种。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己。

设计模式(一)之单例模式
Dreamer 发布于 2014-06-17 收录于 编程手册 预计阅读 3 分钟
单例模式概念 一个类有且仅有一个实例,并且自行实例化向整个系统提供。 单例模式类图 单例模式类图 根据单例模式的描述和类图可以看出单例模式其实是设计模式中很简单的一种模式,一个私有变量,一个私有构造方法,一个公开的方法,就是一个单例模式的基本结构。(ps:类图对于学习和理解设计模式作用非常大)。 单例模式应用场景及缺点 使用场景:比如一个系统中有多个地方需要读取系统的核心配置文件的时候,那么这个读取类就可设计成单例的,这样可以节约系统内存资源,再比如Hibernate中的SessionFactory(它本身不是单例的)我们在使用的时候一般会写一个获取sessioFactory的单例工具类去获取它的实例。 单例模式的缺点:实例化的对象长时间不使用那么很可能会被垃圾回收器回收,就会导致对象的状态丢失!所以具体用什么设计模式用不用这个模式都需要根据实际的情况和使用场景去决定,不要不设计,也不要过度设计!Ps:如果每写一个类都去遵循设计模式中给出的原则,那么你会发现连一个最简单的类都不知道该如何去写了!

java没有main方法也可以运行
Dreamer 发布于 2014-06-15 收录于 后端开发 预计阅读 3 分钟
下面的代码在cmd模式下通过javac命令编译,java命令运行Hello world可以正常输出。 一段代码 1 2 3 4 5 6 public class Test { static{ System.out.println("Hello World!"); System.exit(0); } } 探索 当时在网上看见了上面这段没有main方法也可以执行的代码时很好奇,于是为了弄清楚java中代码的运行先后顺序原因,写了如下两段测试代码,来

测试文章
Dreamer 发布于 2014-06-10 收录于 个人随笔 预计阅读 2 分钟
github上的博客搭建好了,此文章为测试文章,使用轻量级markdown标记语言书写文章! 下面是使用Anisina博客书写设置指南 开启mathjax mathjax: true 块级mathjax $$f(x_1,x_x,\ldots,x_n) = x_1^2 + x_2^2 + \cdots + x_n^2 $$ 行内mathjax 勾股定理:$a^2+b^2=c^2$ 开启代码高亮 highlight: true 1 2 3 function sum(m,n){ return m+n; } 设