state 学习

state 学习

1:对状态的访问, 直接访问,对内直接访问,对外间接访问

2:公共状态, 所有对象共享的状态,对于部分方法才会使用到的状态最好使用别的方式存储状态,例如参数或者助手
   类。 all common state in an object should have the same lifetime.

3:变化的状态集合,不仅对象使用的状态变化,而且状态的数量也变化时,通常使用一个map集合来存储此类的状态。
   Use common state whereever possible, Use variable state for the fields in an object that
may or may not be needed  depending on usage.

4: 外来状态。 某个特别的对象感兴趣的状态,如果把他放在类中,将会违反对称性,把此类状态和其主人存储在map中。 缺点时对象复制时比较困难。

5:局部变量的类型
     a: Collector(收集者), 通常是为了所有的计算而收集信息。收集的结果通常被作为计算结果返回给调用者。
         通常命名为result 或者results.
     b: Count(计数器), 一个用来收集某些对象的次数的收集者。
     c: Explaining.  用来解释复杂表达式的中间结构,利于理解代码。通常时助手类的接入点,减少代码重复。
     d: Reuse(复用). 一个表达式的变化随着时间而变化,这时需要一个临时的住所来暂住一下
     e: Element(元素)  一个集合中的单个元素,例如迭代器

6:数据域(field)
         常见域扮演的角色
        a: 助手(Helper),保持对别人的引用,帮助主人和别人通信,当主人的很多行为都涉及到某个别人(当作
         参数传递的),可以重构为助手域,通过助手和别人通信。
        b: 标帜域(Flag),用来区分对象的行为,可以重构为策略模式
        c: 策略域(Strategy), 对象的行为根据策略对象的变化而变化,如果对象的其生命周期内的行为不变化,
         只是在同类不同对象间变化时,通过构造函数注入策略对象
        d:状态域(state)
        f: 组件(Components); 一个具有自主能力的对象

7: 参数(Parameter)
         耦合性较小的通信方式,当一个对象和某个对象的交互次数较少时通过参数通信较少,但交互次数较多时
      就该把别人招纳为手下了。
     常见参数类型
      a: 收集参数(Collecting Parameter),  就像个无底麻袋,把他轮流传递给每个人,把他们的money放到袋
        子里,最后把他再返回到我这里,看看袋子,就知道其作用了。
      b: 可选参数(Optional Parameter), 可有可无,无时认为其默认的, 可变参数可以当成一个集合作为一个
      对象传递过去。
      c: 参数对象, 太多的对象经常一起出入的话,那就把他们当成一个对象吧!

8:类的全局常量Const  (static final)

9: 通过变量的角色来命名(scope, lifetime, role)

10:类型声明

11:初始化
        a: eager initialization, 在声明出初始化,在构造函数中初始化
        b: Lazy initialization 懒初始化,在真正需要的时候再去初始化。


tips:
      variables (scope, lifetime, role, runtime type of variables)
      role-suggesting name

从Implementation patterns中学到的

你可能感兴趣的:(数据结构,C++,c,C#,F#)