• 设计原则——迪米特原则


    1.全称

    • Least Knowledge Principle
      缩写为:LKP

    2.解释

    • 迪米特法则又叫作最少知道原则
    • 只与你的直接朋友交谈,不跟“陌生人”说话
    • 如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。

    3.接口隔离原则的实现方法

    1.场景:买手机
    • 1.小明想买一部小米手机

    • 2.小明知道小米之家有卖的

    • 3.小米之家告知小明没有货了,需要从英华达工厂进货,有了货,再来买

    • 如果没有迪米特法则的约束,小明就需要同时和小米之家英华达工厂两个对象进行打交道,这样,对象之间的耦合度就太高了

      • 小明通过小米之家了解到英华达工厂有货
      • 小米离开小米之家再到英华达工厂买手机
    • 如果遵循迪米特法则的约束,软件程序中就会出现大量的中间类,使得模块之间的通信效率降低

    class Person:
        def __init__(self, name, branch):
            self.name = name
            self.branch = branch
    
        def buy(self, business):
            """买手机"""
            phone = business.purchase(self.branch)
            print(f"{self.name}通过{business.name}买了一部{phone.branch}手机")
    
    
    class Business:
        def __init__(self, name, factory=None):
            self.name = name
            self.factory = factory
    
        def purchase(self, branch):
            """进货"""
            phone = self.factory.product(branch)
            print(f"{self.name}{phone.branch}手机已到货")
            return phone
    
    
    class Phone:
        branch = None
    
    
    class Factory:
        def __init__(self, name):
            self.name = name
    
        def product(self, branch):
            """生产"""
            print(f"{self.name}工厂已完成{branch}品牌手机的生产")
            phone = Phone
            phone.branch = branch
            return phone
    
    
    if __name__ == '__main__':
        # 3.英华达工厂接到京东商城的订单,立即生产了一批小米手机
        f = Factory("英华达")
        # 2.小米之家找到英华达工厂进了一批小米手机
        b = Business("小米之家", f)
        # 1.小明想买一部小米手机,找到了小米之家
        p = Person("小明", "小米")
        p.buy(b)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    英华达工厂已完成小米品牌手机的生产
    小米之家小米手机已到货
    小明通过小米之家买了一部小米手机
    
    • 1
    • 2
    • 3

    4.迪米特法则的优点

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

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

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

  • 相关阅读:
    灾备建设中的网络传输
    市场逆风中,海尔智家如何续写增长故事
    噪音人声识别接口
    Docker部署青龙面板
    MySQL索引优化
    程序的耦合
    Java中Integer的最大值和最小值
    MySQL运维2-主从复制
    NV21图片格式深入解析与代码实战-RGB转NV21与画框
    每天5分钟玩转Kubernetes | 先把Kubernetes跑起来
  • 原文地址:https://blog.csdn.net/qq_42517220/article/details/127445258