一.编写构造器的有效准则:
用尽可能简单的方法使对象进入正常状态,如果可以的话,避免调用其他方法。在构造器内唯一能够安全调用的那些方法是基类中的final方法(也适用于private方法,它们自动属于final方法)。
二.用继承进行设计的准则:
用继承表达行为间的差异,并用字段表达状态上的变化。
1: class Actor {// 男演员
2: public void act() {}
3: }
4:
5: class HappyActor extends Actor{//高兴的男演员
6: public void act() {System.out.println("HappyActor");}
7: }
8:
9: class SadActor extends Actor{//悲伤的男演员
10: @Override
11: public void act() {System.out.println("SadActor");}
12: }
13:
14: class Stage {//舞台
15: private Actor actor = new HappyActor();
16: public void change(){actor= new SadActor();}
17: public void PerformPlay(){actor.act();}
18: }
19: public class Transmogrify {
20:
21: /**
22: * Stage对象包含一个Actor 的引用,而Actor被初始化为HappyActor对象,
23: * 这意味着PerformPlay()会产生某种特殊行为。
24: * 既然引用在运行时可以与另一个不同的对象重新绑定起来,
25: * 所以SadActor对象的引用可以在Actor中被替代,然后由PerformPlay()产生的行为也随之改变。
26: * 这样一来,我们在运行期间获得了动态的灵活性(这也称作"状态模式")
27: * @param args
28: */
29: public static void main(String[] args) {
30: Stage stage = new Stage();
31: stage.PerformPlay();
32: stage.change();
33: stage.PerformPlay();
34: }
35:
36: }/*Output:
37: HappyActor
38: SadActor*///:~
39: