专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

面向对象设计原则有哪些(常用六大面向对象设计原则介绍)

来源:小易整编  作者:小易  发布时间:2023-02-16 06:31
摘要:面向对象设计原则有哪些(常用的六大面向对象设计原则介绍)面向对象设计原则:,单一职责原则、开放关闭原则、里式替换原则、依赖倒置原则、接口隔离原则、迪米特法则、组合复用原则;...

依赖倒置原则

如果说实现开闭原则的关键事抽象化,是面向对象设计的目标的话,依赖倒置原则就是这个面向对象设计的主要机制。

定义 :

抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。

为什么要实现倒置?这也是我们看这个定义的时候产生的一些问题,那么我们就来说说。

简单的来说,传统的过程性系统的设计办法倾向于使高层次的模块依赖于低层次的模块,抽象层依赖于具体层次,倒置原则是要把这个错误的依赖关系倒转过来,这就是依赖倒置原则的由来。也是为什么要进行依赖倒置。

面向对象设计原则有哪些(常用的六大面向对象设计原则介绍)

依赖倒置原则的实现方法

依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性,所以我们在实际编程中只要遵循以下4点,就能在项目中满足这个规则:

  • 每个类尽量提供接口或抽象类,或者两者都具备。

  • 变量的声明类型尽量是接口或者是抽象类。

  • 任何类都不应该从具体类派生。

  • 使用继承时尽量遵循里氏替换原则。

下面我们通过一些代码实例(商品售卖)来进行理解:

class BeijingShop implements Shop{

public String sell(){

return "北京商店售卖:北京烤鸭,稻香村月饼";

}

}

class ShanDongShop implements Shop{

@Override

public String sell() {

return "山东商店售卖:德州扒鸡,烟台苹果";

}

}

//如果说顾客去购买商品

class Customer{

public void shopping(ShanDongShop shop){

//购物

System.out.println(shop.sell());

}

//这是在山东商店购买,如果说是在北京商店购买就会这样

class Customer{

public void shopping(BeijingShop shop) {

//购物

System.out.println(shop.sell());

}

这也是这种设计的存在缺陷,顾客每更换一家商店,都要修改一次代码,这明显违背了开闭原则。存在以上缺点的原因是:顾客类设计时同具体的商店类绑定了,这违背了依赖倒置原则。解决方式我们可以定义一个共同的接口Shop,就可以这样了。

public class TestSale {

public static void main(String[] args) {

Customer c = new Customer();

System.out.println("---顾客购买商品如下---");

c.shopping(new ShanDongShop());

c.shopping(new BeijingShop());

}

}

interface Shop{

//售卖方法

public String sell();

}

class BeijingShop implements Shop{

public String sell(){

return "北京商店售卖:北京烤鸭,稻香村月饼";

}

}

class ShanDongShop implements Shop{

@Override

public String sell() {

return "山东商店售卖:德州扒鸡,烟台苹果";

}

}

class Customer{

public void shopping(Shop shop) {

System.out.println(shop.sell());//购物

}

}

程序运行结果


本文地址:网络知识频道 https://www.hkm168.com/jiqiao/903083_3.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!

共3页 1 2 3 当前是最后一页

网络知识
小编:小易整编
相关文章相关阅读
  • 什么是结构化程序设计

    什么是结构化程序设计

    结构化程序设计是一种使程序更加清晰、易于理解和维护的编程方法论。通过将程序划分为不同的模块,并使用控制结构来组织这些模块,结构化程序设计使程序的开发和维护更加高效和可靠,无论是初学者还是有经验的开发者,都应该掌握结构化程序设计的基本原理和技...

  • javascript中的设计模式有哪些

    javascript中的设计模式有哪些

    javascript中的设计模式有:单例模式、策略模式、代理模式、迭代器模式、“发布-订阅”模式、命令模式、组合模式、模板方法模式、享元模式、职责链模式、中介者模式、装饰者模式、状态模式、适配器模式、外观模式等。本教程操作环境:window...

  • 在线投票系统的设计与实现

    在线投票系统的设计与实现

    在线投票系统的设计与实现随着互联网的不断发展,在线投票系统成为了一种非常方便和高效的方式来进行民意调查和选举。本文将介绍在线投票系统的设计和实现,并附带一些代码示例。一、系统设计功能需求分析在线投票系统主要具备以下功能:用户注册与登录:用户...

  • UI设计主要学什么?

    UI设计主要学什么?

    ui设计是指对软件的人机交互、操作逻辑、界面美观的整体设计;ui设计中文名字叫:用户界面设计。ui设计作为时下热门高薪职业之一,其发展前景不言而喻,应用领域非常广泛,那么ui设计都需要学习什么呢?下面本篇文章就来给大家介绍一下,希望对你们有...

  • Mysql索引的最左前缀原则是什么

    Mysql索引的最左前缀原则是什么

    前言之所以有这个最左前缀索引归根结底是mysql的数据库结构B+树在实际问题中比如索引index(a,b,c)有三个字段,使用查询语句select*fromtablewherec='1',sql语句不会走index索引...

  • ux设计是什么

    ux设计是什么

    ux,指的是用户体验。一般而言国内ux设计师也称为交互设计师或ue设计师。ux设计师是设计人与信息产品的流程和关系,归根结底都要研究人、事、物的联系,它是一个囊括计算机工程、心理学、设计的交叉学科。本教程操作环境:windows7系统、De...

  • Java 中的架构模式和领域驱动设计技术

    Java 中的架构模式和领域驱动设计技术

    java是当前使用最广泛的编程语言之一,它不仅具有面向对象的特性,同时也提供了许多强大的架构模式和设计技术,其中领域驱动设计(domain-drivendesign,ddd)是一个非常流行的技术,并且在实际开发中有广泛的应用。本文将...

  • CSS网页背景图设计:创建各种背景图样式和效果

    CSS网页背景图设计:创建各种背景图样式和效果

    CSS网页背景图设计:创建各种背景图样式和效果,需要具体代码示例摘要:在网页设计中,背景图是一种重要的视觉元素,它可以有效地增强页面的吸引力和可读性。本文将介绍一些常见的CSS背景图设计样式和效果,并提供相应的代码示例。读者可以根据自己的需...

  • 周排行
  • 月排行
  • 年排行

精彩推荐