06 迪米特法则

官方定义

迪米特法则(LoD:Law of Demeter)又叫最少知识原则(LKP:Least
Knowledge Principle ),指的是一个类/模块对其他的类/模块有越少的了解越
好。简言之:talk only to your immediate friends(只跟你最亲密的朋友交
谈),不跟陌生人说话。

通俗解释

06 迪米特法则_第1张图片
总结:尽量使用中间人角色

场景示例:

06 迪米特法则_第2张图片
迪米特法则的独特之处在于它简洁而准确的定义,它允许在编写代码时直接应用,几乎自动地应用了适当的封装、高内聚和低耦合。
但是,过度使用迪米特法则会使系统产生大量的中介类,从而增加系统的复杂性,使模块之间的通信效率降低。所以,在釆用迪米特法则时需要反复权衡,确保高内聚和低耦合的同时,保证系统的结构清晰。

public class Star {
	private String name;
	public Star(String name) {
		this.name=name;
	}
	public String getName() {
		return name;
	}
}

粉丝类(Fans)

public class Fans {
	private String name;
	public Fans(String name) {
		this.name=name;
	}
	public String getName() {
		return name;
	}
}

媒体公司类(Company)

public class Company {
private String name;
public Company(String name) {
this.name=name;
}
public String getName() {
return name;
}
}

经纪人类(Agent)

public class Agent {
	private Star star;
	private Fans fans;
	private Company company;
	public void setStar(Star star) {
		this.star = star;
	}
	public void setFans(Fans fans) {
		this.fans = fans;
	}
	public void setCompany(Company company) {
		this.company = company;
	}
	public void meeting() {
		System.out.println(fans.getName() + "与明星" +
star.getName() + "见面了。");
	}
	public void business() {
		System.out.println(company.getName() + "与明星" +
star.getName() + "洽淡业务。");
	}
}

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