设计模式7大原则——迪米特法则解析(含源码示例)

迪米特法则提倡只与直接朋友交流,降低耦合度,提高模块独立性。本文通过定外卖和明星与经纪人关系的实例,详细解释了如何实施这一原则,并讨论了其在优化代码结构、提升可复用性和扩展性方面的优点,同时也指出过度使用可能导致系统复杂性增加的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、定义

迪米特法则的定义是:只与你的直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to strangers)。

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

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

二、实现方法

从迪米特法则的定义和特点可知,它强调以下两点:

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

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


所以,在运用迪米特法则时要注意以下 6 点

  1. 在类的划分上,应该创建弱耦合的类。类与类之间的耦合越弱,就越有利于实现可复用的目标。

  2. 在类的结构设计上,尽量降低类成员的访问权限。

  3. 在类的设计上,优先考虑将一个类设置成不变类。

  4. 在对其他类的引用上,将引用其他对象的次数降到最低。

  5. 不暴露类的属性成员,而应该提供相应的访问器(set 和 get 方法)。

  6. 谨慎使用序列化(Serializable)功能。

说这么多,下面我们举两个例子来说明一下。

三、实例1:定外卖

外卖软件大家都有吧,现在点外卖已经成了绝大部分人每天都会发生的动作,现在我们假设,有位客户点了一份披萨店的外卖,订单产生之后,披萨店接收了订单并开始为客户准备披萨,代码如下:

public class PizzaStore {
 
    public void takeOrder() {
        System.out.println("披萨店接收订单");
    }
 
    public void prepareSource() {
        System.out.println("披萨店准备披萨制作原料
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值