贵州有网站的企业,网站的建设需要多少,银川市住房城乡建设局网站,徐水住房建设局网站学会设计模式#xff0c;你就可以像拥有魔法一样#xff0c;在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们#xff08;GoF#xff09;凝聚出来的最佳实践#xff0c;可以提高代码的可读性、可维护性和可重用性#xff0c;从而让我们的开发效率更高。通…
学会设计模式你就可以像拥有魔法一样在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们GoF凝聚出来的最佳实践可以提高代码的可读性、可维护性和可重用性从而让我们的开发效率更高。通过不断的练习和实践掌握其中的奥妙选择合适的设计模式能为我们的项目增加一丝神奇的魔力。 文章目录 定义例子Coding测试测试结果优点缺点 定义
一个对象应该对其他对象保持最少的了解使得系统功能模块相对独立。 即一个类作为一个调用方应当对自己依赖的类(被调用的类)其中所处理的逻辑细节知道的越少越好。
例子
食客到饭点通过服务员点餐服务员通知厨师做菜
Coding
我们先定义一个类与类之间的关系
如果被调用类在调用类中作为成员变量的类型、方法参数类型、方法返回值类型那么我们称被调用类和调用类是“朋友”关系如果被调用类在调用类中仅作为局部变量那么我们称被调用类和调用类是“陌生人”关系
食客类 食客吃饭无需关心厨师如何烹饪菜肴。所以食客和服务员是朋友和厨师是陌生人
public class Diner {public void order(Waiter waiter, String tableNumber, String dishName) {waiter.passDish(tableNumber, dishName);}
}食客类中因为入参中有Waiter类所以Waiter和Diner是朋友。
服务员类
public class Waiter {public Chef notice(String tableNumber) {System.out.println(服务员接到 tableNumber 号桌点菜);Chef chef new Chef();return chef;}public void passDish(String tableNumbe, String dishName) {String cooking notice(tableNumbe).cooking(dishName);System.out.println(cooking);System.out.println(服务员传菜);}
}服务员类中notice方法返回值类型是Chef所以服务员和厨师是朋友
注类与类之间的耦合是不可避免的遵循迪米特法则并不是完全解除依赖而是在一定程度上降低类与类之间不必要的依赖。
厨师类
public class Chef {public String cooking(String dishName) {return 厨师烹饪 dishName;}
}测试
Test
public void test() {Diner diner new Diner();Waiter waiter new Waiter();diner.order(waiter, 11, 宫保鸡丁);
}测试结果
服务员接到11号桌点菜
厨师烹饪宫保鸡丁
服务员传菜我们只能尽量的不要让「陌生人」作为局部变量出现在类的内部并且保障类对自己依赖的类知道的越少越好。
优点
1、降低了类之间的耦合度提高了模块的相对独立性。 2、提高类的可复用率和系统的扩展性。
缺点
过度使用迪米特法则会使系统产生大量的中介类从而增加系统的复杂性使模块之间的通信效率降低。所以在釆用迪米特法则时需要反复权衡确保高内聚和低耦合的同时保证系统的结构清晰。
文章后期会持续优化如果觉得小名的文章帮助到了您请关注小名支持一下小名给小名的文章点赞、评论✍、收藏谢谢大家啦~♥♥♥ 编码魔法师系列文章会收录在小名的【设计模式】专栏中希望大家可以持续关注