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


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

  • 相关阅读:
    java毕业生设计在线玩具租赁系统计算机源码+系统+mysql+调试部署+lw
    使用axios 请求库结合iview组件做登录页面
    LeetCode: 数组中的第K个最大元素
    lodash已死?radash最全使用介绍(附源码说明)—— Array方法篇(4)
    Python高级篇(07):迭代器
    Intellij各个功能小件的样子
    黑猫带你学UFS协议栈第10篇:Unipro协议框架详解
    【python海洋专题十一】colormap调色
    电商平台API接口采集电商平台淘宝天猫京东拼多多数据获取产品详情信息,销量,价格,sku案例
    linux之jq命令
  • 原文地址:https://blog.csdn.net/qq_42517220/article/details/127445258