您当前的位置:首页 > 计算机 > 编程开发 > 设计模式

【设计模式】7.设计模式原则-迪米特法则

时间:02-01来源:作者:点击数:

一、原则:

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

二、作用:

  1.降低了类之间的耦合度,提高了模块的相对独立性

  2.由于亲和度降低,从而提高了类的可复用性和系统的扩展性。

  3.过渡使用迪米特法则会使系统产生大量的中介类,从而增加系统的复杂性,使模块之间的通信效率降低。所以,在采用迪米特法则时需要反复权衡,确保高内聚和低耦合的同时,保证系统的结构清晰。

三、实现:

  1.从依赖者的角度来说,只依赖应该依赖的对象.

  2.从被依赖者的角度说,只暴露应该暴露的方法。

四、涉及到的设计模式:

  中介者模式,适配器模式

五、示例:

  1.平时遇到的需要使用迪米特法则的场景,对外有一套旧接口,对接了很多的厂家,现在系统优化,在全新的项目上开发了功能相同的一系列接口,原有的对外接口不能换掉,只能开发一套转发到新接口的功能:将旧接口的参数转化为新接口的参数发送到新的api接口上,之后将新的api接口返回的数据转换为旧接口的返回结果发送给用户。这个模式是适配器模式。

  2.买家和厂家、产品销售

  想买一个东西并不需要去生产厂商那里去拿,而是去小卖铺或者超市去购买,小卖铺或者超市就是中介者。

  代码示例:

  购买者:

@Data
public class Buyers {
    private String name;
}

  生产厂家:

@Data
public class Manufacturer {
    /**
     * 产品名称
     */
    private String productName;
}

  超市:

public class SuperMarket {
    private Manufacturer manufacturer;
    private Buyers buyers;

    public SuperMarket(Manufacturer manufacturer, Buyers buyers) {
        this.manufacturer = manufacturer;
        this.buyers = buyers;
    }

    public void sale() {
        System.out.println(buyers.getName() + "买了" + manufacturer.getProductName());
    }
}

  调用代码:

public class MainTest {
    public static void main(String[] args) {
        Buyers buyers = new Buyers();
        buyers.setName("张三");

        Manufacturer manufacturer = new Manufacturer();
        manufacturer.setProductName("薯片");
        SuperMarket superMarket = new SuperMarket(manufacturer, buyers);

        superMarket.sale();
    }
}

  效果:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门