【人工智能设计模式:迪米特法则的智能实践】
🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:“没有罗马,那就自己创造罗马~”
文章目录
- 前言
- 迪米特法则
- 含义
- 案例
- 运行结果
- 总结:
前言
本文主要介绍的是软件设计原则中的迪米特法则。
迪米特法则
迪米特法则 :
只和直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to strangers)
含义
- 如果两个软件实体无需直接通信,那么就不应该发生直接的相互调用,可以通过第三方转发该调用。目的是降低类之间的耦合度,提高模块的相对独立性。
- 迪米特法则中的
朋友
是指:当前对象本身、当前对象的成员对象、当前对象所创建的对象、当前对象的方法参数等,这些对象同当前对象存在关联关系、聚合或组合关系,可以直接访问这些对象的方法。 - 有点抽象的概念🤏,让我们举个例子理解一下~
- 如果有一个公司要做软件,它不可能直接去找软件工程师去做,而是找专门做软件的公司,然后让这个软件公司去让软件工程师按照要求去做对应的软件,其中软件公司就是第三方,而软件工程师和要做软件的公司就是实体。
案例
-
下面看一个例子来理解接口隔离原则
- 【例】明星与经纪人的关系实例
- 明星由于全身心投入艺术,所以许多日常事务由经纪人负责处理,如和粉丝的见面会,和媒体公司的业务洽淡等。这里的经纪人是明星的朋友,而粉丝和媒体公司是陌生人,所以适合使用迪米特法则。
- 类图如下:
-
实现代码:
package principles.Dimite;
public class Star {
private String name;
public Star(String name) {
this.name = name;
}
public String getName(){
return name;
}
}
package principles.Dimite;
public class Fans {
private String name;
//提供一个有参构造方法
public Fans(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
package principles.Dimite;
public class Company {
private String name;
//构造方法
public Company(String name){
this.name = name;
}
//get方法
public String getName(){
return name;
}
}
package principles.Dimite;
public class Agent {
private Star star;
private Fans fans;
private Company company;
//提供获取对象的get方法
public void setStar(Star star) {
this.star = star;
}
public void setFans(Fans fans) {
this.fans = fans;
}
public void setCompany(Company company) {
this.company = company;
}
public void meeting(){
System.out.println(fans.getName() + "与明星 " + star.getName() + "见面了。");
}
public void business(){
System.out.println(company.getName() + "与明星 "+ star.getName() + "洽谈业务。");
}
}
package principles.Dimite;
public class Test {
public static void main(String[] args) {
//创建对应的对象
Agent agent = new Agent();
//创建经纪公司对象
Company company = new Company("时代峻峰");
//设置给经纪人对象
agent.setCompany(company);
Fans fans = new Fans("Aileen");
agent.setFans(fans);
Star star = new Star("易烊千玺");
agent.setStar(star);
//调用和粉丝见面的方法
agent.meeting();
//和媒体公司洽谈业务的方法
agent.business();
}
}
运行结果
- 通过运行结果,我们可以看到通过迪米特法则调用第三方经纪人
Agent
可以降低明星和粉丝,明星和媒体公司的耦合度。
总结:
- 迪米特法则通过减少对象之间的直接交互,特别是避免与不相关的“陌生人”直接沟通,来降低耦合度,提高系统的可扩展性与可维护性。