迪米特法則的表述:
只與你直接的朋友們通信
不要跟“陌生人”說話
每一個軟件單位其他的單位都只有最少的知識,而且局限于那些與本單位密切相關(guān)的軟件單位
具體做法:如果其中之一人類需要調(diào)用另一個類的某個方法的話,可以通過第三者轉(zhuǎn)發(fā)這個調(diào)用。
例如:某人如果要調(diào)用陌生人中的一個方法,剛可以通過朋友來轉(zhuǎn)發(fā),而不自己去調(diào)用,這樣一來就使系統(tǒng)內(nèi)部的耦合度降低。
具體代碼:
1 package pattern.LoD;
2
3 public class Someone {
4
5 public void operation1(Friend friend) {
6 // TODO Auto-generated method stub
7 // friend.forward();
8 AbstractStranger stranger = friend.provide();
9 stranger.operation3();
10 }
11
12 }
13 ///////////////////
14 package pattern.LoD;
15
16 public class Friend {
17 // private Stranger stranger = new Stranger();
18 private AbstractStranger stranger = new Stranger();
19
20
21 public void operation2(){
22 System.out.println("In Friend.operation2()");
23 }
24 /*
25 public void forward(){
26 stranger.operation3();
27 }
28 */
29 public AbstractStranger provide() {
30 // TODO Auto-generated method stub
31
32 return stranger;
33 }
34
35 }
36 /////////////////////
37 package pattern.LoD;
38
39 public interface AbstractStranger {
40 abstract void operation3();
41 }
42 ////////////////////
43 package pattern.LoD;
44
45 public class Stranger implements AbstractStranger{
46 public void operation3(){
47 System.out.println("I want to a friend of Someone~~");
48 }
49
50 }
51 //////////////////////
52 package pattern.LoD;
53
54 public class Main {
55
56 /**
57 * @param args
58 */
59 public static void main(String[] args) {
60 // TODO Auto-generated method stub
61 Someone someone = new Someone();
62 Friend friend = new Friend();
63 someone.operation1(friend);
64 }
65
66 }
67