迪米特法则(LoD)

目录

一、主要思想

二、优点

三、 应用示例


迪米特法则,被称为:最少知识原则(Law of Demeter),也被称为“只和直接朋友交流”原则,是一种软件设计原则,旨在减少系统各组件之间的耦合。该原则强调一个对象应该尽量少地了解其他对象的细节,尤其是那些不直接与自己交互的对象。

一、主要思想

1.只与对象的“直接朋友”(直接关联的对象)进行交互。

2. 尽量避免通过链式调用访问对象的内部信息(例如,a.getB().getC().doSomething()),因为这会导致紧耦合。

二、优点

1. 降低耦合度:通过减少对象之间的依赖关系,提升系统的灵活性和可维护性。

2. 提高模块化:有助于将功能模块化,便于进行单元测试和重构。

3. 增强代码的可读性:清晰的责任边界使得代码更易于理解

三、 应用示例

        假设有如下类:

class Engine {  
    public void start() {  
        System.out.println("Engine started");  
    }  
}  

class Car {  
    private Engine engine;  

    public Car() {  
        this.engine = new Engine();  
    }  

    public Engine getEngine() {  
        return engine;  
    }  
}  

class Driver {  
    private Car car;  

    public Driver(Car car) {  
        this.car = car;  
    }  

    public void startCar() {  
        // 违反最小知识原则,直接调用链  
        car.getEngine().start();  
    }  
}

        在这个例子中,Driver直接访问了Car内部的Engine对象。这意味着Driver依赖于Car和Engine 的实现细节。为了遵循最小知识原则,我们可以通过引入简单的接口或者方法来改进设计:

class Engine {  
    public void start() {  
        System.out.println("Engine started");  
    }  
}  

class Car {  
    private Engine engine;  

    public Car() {  
        this.engine = new Engine();  
    }  

    // Car 提供的一个高层方法,隐藏 Engine 的实现细节  
    public void start() {  
        engine.start();  
    }  
}  

class Driver {  
    private Car car;  

    public Driver(Car car) {  
        this.car = car;  
    }  

    public void startCar() {  
        // 现在 Driver 只需要知道 Car 提供的方法  
        car.start();  
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值