对于柔性设计这章,说实话读完有种雾里看花的感觉。只学会了作者提供的六种手段,并没有理解其真实意图。既然如此,索性先依葫芦画瓢吧。聊胜于无,学会皮毛也算进步。
1.Intention Revealing Interfaces
简单地说,就是要为方法起个好名字。那么问题来了,什么叫做好名字?就是瞄一眼,就知道它是干什么的。
2.Side-Effect-Free Function
首先定义两个概念:
- 函数: 不产生副作用的操作,返回值代表了它的产出。可以被调用多次,每次都返回相同的值。
- 命令: 会产生副作用,会导致对象状态变更。
其中函数不能产生副作用算是老生常谈的话题了,有点经验的程序员应该都明白意思,其实就三字"幂等性"。
3.Assertions
如果使用命令,要在产生副作用的地方使用断言明确标识。方面定位问题。
4.Conceptual Contours
这个概念最抽象,说实话没看懂。
5.Standalone Class
最简单,单例模式也!这里推荐静态内部类单例模式,代码如下:
public class Singleton {
private Singleton(){
}
public static Singleton getInstance(){
return Inner.instance;
}
private static class Inner {
private static final Singleton instance = new Singleton();
}
}
6.Closure of Operations
闭合操作,也不太懂。强行理解一波,流式编程应该是其实现之一。
StringBuilder builder = new StringBuilder();
builder .append("1").append("2");