Java设计模式之三十(迪米特法则)

一、什么是迪米特法则

迪米特法则(Law of Demeter )又叫做最少知识原则,也就是说,一个对象应当对其他对象尽可能少的了解。

迪米特法则最初是用来作为面向对象的系统设计风格的一种法则,于1987年秋天由lan holland在美国东北大学为一个叫做迪米特的项目设计提出的。


二、狭义的迪米特法则

如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一类的某一个方法的话,可以通过第三者转发这个调用。


三、和陌生人说话

Java设计模式之三十(迪米特法则)_第1张图片

四、不要和陌生人说话

Java设计模式之三十(迪米特法则)_第2张图片

五、与依赖倒转原则结合

Java设计模式之三十(迪米特法则)_第3张图片

六、走后门看病

Java设计模式之三十(迪米特法则)_第4张图片

七、办理手续住院

Java设计模式之三十(迪米特法则)_第5张图片

八、迪米特法则和设计模式


1.外观模式


2.中介者模式


代码实现:

某人:

package com.qianyan.ex4;

public class SomeOne {
	private Friend friend;
	private Stranger stranger;

	public Stranger getStranger() {
		return stranger;
	}

	public void setStranger(Stranger stranger) {
		this.stranger = stranger;
	}

	public Friend getFriend() {
		return friend;
	}

	public void setFriend(Friend friend) {
		this.friend = friend;
	}

	public void play() {
		System.out.println("someone play");
		friend.play();
		stranger.play();
	}

}

朋友:

package com.qianyan.ex4;

public class Friend {
	public void play(){
		System.out.println("friends paly");
	}
}

陌生人(抽象):

package com.qianyan.ex4;

public abstract class Stranger {
	public abstract void play();
}

陌生人A:

package com.qianyan.ex4;

public class StrangerA extends Stranger {

	public void play() {
		System.out.println("strangerA play");
	}

}

测试类:

package com.qianyan.ex4;

public class MainClass {
	public static void main(String[] args) {
		SomeOne zhangsan = new SomeOne();
		zhangsan.setFriend(new Friend());
		zhangsan.setStranger(new StrangerA());
		zhangsan.play();
	}
}

测试结果:

someone play
friends paly
strangerA play


你可能感兴趣的:(java,java设计模式,迪米特原则)