归档之于 ‘ 2014 年11月 ’
JAVA中的备忘录模式实例教程
原文链接 作者:Pankaj Kumar 译者:f0tlo <1357654289@qq.com>
备忘录模式是一种行为模式。备忘录模式用于保存对象当前状态,并且在之后可以再次使用此状态。备忘录模式实现的方式需要保证,被保存的对象状态不能被对象从外部访问,目的为了被保存的这些对象状态的完整性。
阅读全文
Java Reflection教程
原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com)校对:方腾飞
Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)检查类,接口,变量以及方法的信息。反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值。
Java反射机制功能强大而且非常实用。举个例子,你可以用反射机制把Java对象映射到数据库表,就像Butterfly Persistence(译者注:原作者所编写的框架)所做的那样,或者把脚本中的一段语句在运行期映射到相应的对象调用方法上,就像 Butterfly Container(译者注:原作者所编写的框架)在解析它的配置脚本时所做的那样。
Java中的策略模式实例教程
原文链接 作者:Pankaj Kumar 译者:f0tlo <1357654289@qq.com>
策略模式是一种行为模式。用于某一个具体的项目有多个可供选择的算法策略,客户端在其运行时根据不同需求决定使用某一具体算法策略。
策略模式也被称作政策模式。实现过程为,首先定义不同的算法策略,然后客户端把算法策略作为它的一个参数。使用这种模式最好的例子是Collection.sort()方法了,它使用Comparator对象作为参数。根据Comparator接口不同实现,对象会被不同的方法排序。详细介绍请看java中的排序对象。
AKKA文档(Java版)—建立有限状态机角色
原文地址 译者:Zhanggc
建立有限状态机角色
概述
有限状态机模式在Erlang design principles里面被很好描述出来.简而言之,它可以被视为一组关系:
State(S) x Event(E) -> Actions (A), State(S’)
这些关系描述为:
如果我们在状态S 和 时间E 发生,我们应该执行动作A 与转换到状态S’.
而Scala 程序语言使构建一个良好内部DSL(领域特定语言)成为可能,后者用于规划有限状态机(请见FSM)。对于用同样方法,由于Java语法冗长不适合构建。本章节介绍通过自身训练效实现相同关注点分离方法。
Java Reflection(十一):动态代理
原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com)
内容索引
创建代理
InvocationHandler接口
利用Java反射机制你可以在运行期动态的创建接口的实现。java.lang.reflect.Proxy类就可以实现这一功能。这个类的名字(译者注:Proxy意思为代理)就是为什么把动态接口实现叫做动态代理。动态的代理的用途十分广泛,比如数据库连接和事物管理(transaction management)还有单元测试时用到的动态mock对象以及AOP中的方法拦截功能等等都使用到了动态代理。
阅读全文
Java Reflection(十):数组
原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com)
内容索引
java.lang.reflect.Array
创建一个数组
访问一个数组
获取数组的Class对象
获取数组的成员类型
利用反射机制来处理数组会有点棘手。尤其是当你想要获得一个数组的Class对象,比如int[]等等。本节会讨论通过反射机制创建数组和如何获取数组的Class对象。
注意:在阅读Eyal Lupu的博客文章“Two Side Notes About Arrays and Reflection”之后对本文的内容做了更新。目前这个版本参考了这篇博文里面的内容。
阅读全文
Java IO: Buffered和Data
作者:Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com)
本小节会简要概括Java IO中Buffered和data的输入输出流,主要涉及以下4个类型的流:BufferedInputStream,BufferedOutputStream,DataInputStream,DataOutputStream。
Java中的状态模式实例教程
原文链接 作者:Pankaj Kumar 译者:f0tlo <1357654289@qq.com>
状态模式是一种行为设计模式。适用于当对象的内在状态改变它自身的行为时。
如果想基于对象的状态来改变自身的行为,通常利用对象的状态变量及if-else条件子句来扮演针对对象的不同行为。状态模式Context(环境)和State(状态)分离的方式既保证状态与行为的联动变化,又使得这种变化是条理明晰且松耦合的。