Java序列化

今天在测试出现一个序列化的问题,一个类里有另一个类的引用,这两个类都必须要序列化,必须实现Serializable接口

说得简单一点,序列化就是讲内存中的对象数据进行持久化,一般是字节序列;反序列化就正好反过来,将字节序列读到内存当中;还有点,进程间发送Java对象数据,都是通过二进制字节序列来传送

序列化

首先创建OutputStream对象

然后将OutputStream对象封装到Objec[……]

Read more

Java服务端单元测试指南

转自阿里巴巴墨源:Java服务端单元测试指南

一. 前言

单元测试并不只是为了验证你当前所写的代码是否存在问题,更为重要的是它可以很大程度的保障日后因业务变更、修复Bug或重构等引起的代码变更而导致(或新增)的风险。

同时将单元测试提前到编写正式代码进行(测试驱动开发),可以很好的提高对代码结构的设计。通过优先编写测试用例,可以很好的从用户角度来对功能的分解、使用过程和接口等进行设计,从而提[……]

Read more

设计模式:Visitor模式

通常数据结构中保存了许多元素,然后对这些元素进行处理;然而这些处理的代码实现放在哪里,通常可能就放在表示数据结构的类中,但是如果处理方式有很多种,那么每次只要增加一种处理,就必须要去修改表示数据结构的类

Visitor模式,访问者模式;这种设计模式将数据结构和处理分离开来,编写一个表示“访问者”的类来访问数据结构中的元素,并把对各元素的处理交给访问者类,这样,当需要增加新的处理时,只需要编写新的访[……]

Read more

设计模式:Decorator模式

装饰器应该是用得比较多的,比如有一个蛋糕,加上奶油,就变成了奶油蛋糕;加上草莓,就变成草莓奶油蛋糕;加上蜡烛,就变成了生日蛋糕;虽然加了各种装饰品,但都依旧还是蛋糕,只不过加上了一些装饰后,目的也更加明确了

Decorator模式就是给对象添加装饰,和蛋糕类似,首先有一个相当于蛋糕的对象,然后不断地装饰蛋糕一样地不断给对象增加功能,就变成了使用目的更明确的对象

下面这个例子,给一个字符串添加边框装[……]

Read more

设计模式:Composite模式

组合模式,用于创造出递归结构,能够使容器和内容具有一致性

比如文件系统,文件目录里里可以放入文件,也可以放入子文件目录,同理子文件目录又可以放入文件,也可以放入子文件目录,这个文件目录就形成了一种容器结构,递归结构;虽然文件目录和文件是不同类型的对象,但是它们都可以放入到文件目录中,那么文件目录和文件可以统称为目录条目,directory entry,在目录条目中,文件目录和文件被当做是同一种对象[……]

Read more

设计模式:Strategy模式

策略模式,类似算法,属于对象的行为模式,针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换,使得算法可以在不影响到客户端的情况下发生变化

下面有一个用了策略模式的例子,有点复杂,功能是让电脑玩猜拳游戏,有点自我学习的感觉

这里考虑两种猜拳的策略:

第一种策略是如果这局猜拳获胜,那么下一局也出一样的手势,WinningStrategy

第二种策略是根据上一局的手势从[……]

Read more