迪米特法则

迪米特法则

迪米特法则又叫最少知识原则。
只和你的直接朋友交流,不和 ‘陌生人’ 说话。

含义:如果两个软件实体无需直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。

迪米特法则中的‘朋友’是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联、聚合或组合关系,可以直接1访问这些对象的方法。

生活中相关案例有很多,例如卖家、买家和中介,明星、粉丝、经纪人和传媒公司等

以下是明星相关案例:

//明星
public class Star {
    private String name;

    public Star(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

//粉丝
public class Fans {
    private String name;

    public Fans(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

//媒体公司
public class Company {
    private String name;

    public Company(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}
//经纪人
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(star.getName()+"和粉丝"+fans.getName()+"见面");
    }
    //和媒体公司洽谈的方法
    public void business(){
        System.out.println(star.getName()+"和"+company.getName()+"洽谈");
    }

}
public class Client {
    public static void main(String[] args) {
        Agent agent = new Agent();//创建明星,经纪人,公司,粉丝
        Star star = new Star("刘亦菲");
        Company company = new Company("传媒");
        Fans fans = new Fans("亦家人");
        agent.setStar(star);
        agent.setCompany(company);
        agent.setFans(fans);
        agent.meeting();//明星与粉丝见面
        agent.business();//和公司洽谈
    }
}

迪米特法则_第1张图片

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