迪米特法则的表述:
只与你直接的朋友们通信
不要跟“陌生人”说话
每一个软件单位其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位
具体做法:如果其中之一人类需要调用另一个类的某个方法的话,可以通过第三者转发这个调用。
例如:某人如果要调用陌生人中的一个方法,刚可以通过朋友来转发,而不自己去调用,这样一来就使系统内部的耦合度降低。
具体代码:
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