依赖倒转_3

RK809音频Codec调试实战:设备树配置、功放链路与无声排查 在嵌入式Linux音频开发中,Codec驱动与设备树配置是音频链路正常工作的基础。I2S与MCLK时钟同步、DAPM路由以及功放增益控制,共同决定了从数字信号到喇叭发声的最终质量。针对RK平台常用的RK809集成音频Codec,开发者常因设备树节点遗漏、MCLK未使能、功放EN时序不正确等导致无声或音质劣化。本文梳理RK809音频通路的完整链路,讲解设备树关键属性、ALSA驱动注册流程、tinymix调试方法以及功放常见故障排查思路,帮助开发者快速定位无声、杂音、破音问题。 阅读详情

依赖倒转原则
基本介绍
1)高层模块不应该依赖底层模块,二者都应该依赖其抽象
2)抽象不应该依赖细节,细节应该依赖抽象
3)依赖倒转(倒置)核心思想是面向接口编程

应用实例
编程完成Person接受消息的功能

方式1分析

1.简单,比较容易想到
2.如果我们获取的对象是微信,短信等,则新增类,同时Person也要新增相应的接受方法
3.解决思路:引入一个抽象的接口IReceiver 表示接受者,这样Person类与接口IReceiver发生依赖,因为Emial,微信 等属于接受的范围, 他们各自实现IReceiver,接口就ok,就符合依赖倒转原则

public class DependecyInversion {

    public static void main(String[] args) {
        Person person = new Person();
        person.receive(new Email());
    }
}

class Email{

    public String getInfo(){
        return "电子邮件:hello,world";
    }
}
//完成Person接受消息的功能
/**
 * 方式1分析
 *  1.简单,比较容易想到
 *  2.如果我们获取的对象是微信,短信等,则新增类,同时Person也要新增相应的接受方法
 *  3.解决思路:引入一个抽象的接口IReceiver 表示接受者,这样Person类与接口IReceiver
 *     发生依赖,因为Emial,微信 等属于接受的范围, 他们各自实现IReceiver,接口就ok,
 *     就符合依赖倒转原则
 */
class Person{
    public  void receive(Email email){
        System.out.println(email.getInfo());
    }
}

优化方式2
此方式只需增加具体的实现,而不用修改客户端和Person的方法


public class DependecyInversion {

    public static void main(String[] args) {
        //客户段无需改变,只需要增加具体的实现类
        Person person = new Person();
        person.receive(new Email());
        person.receive(new Wexin());
    }
}

/**
 * 定义一个接口
 */
interface IReceiver{
    public String getInfo();
}

class Email implements IReceiver{

    public String getInfo(){
        return "电子邮件:hello,world";
    }
}
//增加一种新的接受方式
class Wexin implements IReceiver{

    @Override
    public String getInfo() {
        return "微信信息:hello ok";
    }
}


//完成Person接受消息的功能
class Person{
    //这里是对接口的依赖
    public  void receive(IReceiver receiver){
        System.out.println(receiver.getInfo());
    }
}

依赖关系传递的三种方式和应用案例
1.通过接口传递实现依赖

// 方式1: 通过接口传递实现依赖
// 开关的接口
 interface IOpenAndClose {
 public void open(ITV tv); //抽象方法,接收接口
 }

 interface ITV { //ITV接口
 public void play();
 }

 class ChangHong implements ITV {

	@Override
	public void play() {
		// TODO Auto-generated method stub
		System.out.println("长虹电视机,打开");
	}

 }
// 实现接口
 class OpenAndClose implements IOpenAndClose{
 	public void open(ITV tv){
 		tv.play();
 	}
 }

2.通过构造函数依赖传递

// 方式2: 通过构造方法依赖传递
 interface IOpenAndClose {
 	public void open(); //抽象方法
 }
 interface ITV { //ITV接口
 	public void play();
 }
 class OpenAndClose implements IOpenAndClose{
 	public ITV tv; //成员
 	public OpenAndClose(ITV tv){ //构造器
 		this.tv = tv;
 	}
 	public void open(){
 		this.tv.play();
 	}
 }

3.通过setter方法传递

interface IOpenAndClose {
	public void open(); // 抽象方法

	public void setTv(ITV tv);
}

interface ITV { // ITV接口
	public void play();
}

class OpenAndClose implements IOpenAndClose {
	private ITV tv;

	public void setTv(ITV tv) {
		this.tv = tv;
	}

	public void open() {
		this.tv.play();
	}
}

class ChangHong implements ITV {

	@Override
	public void play() {
		// TODO Auto-generated method stub
		System.out.println("长虹电视机,打开");
	}
}

依赖倒置原则总结
1)底层模块尽量都要有抽象类或接口,活这两者都有,程序稳定性更好
2)变量的声明类型尽量是抽象类或接口,这样变量应用和实际对象,就存在一个缓冲层,利于程序扩展和优化
3)继承时遵循里氏替换原则

Arduino——GY39大气压、温湿度、光照模块 前几天买东西的时候买了一个GY39,这个模块集成了温湿度,大气压,海拔,光照一体,使用起来很方面。它有两种工作模式使用串口模式时需要搭配转接板,我选择了IIC模式,看一下通信协议吧,就是关于高八位和低八位的数据。看一下接线。 阅读详情

相关推荐

modbus-esp8266库深度解析:工业级Modbus协议栈实现

Modbus是一种广泛应用于工业自动化领域的通用串行通信协议,其核心在于标准化的功能码、寄存器模型与帧结构设计。基于RTU、ASCII和TCP三种传输变体,Modbus协议通过主从架构实现设备间可靠数据交互,具备低开销、高兼容性与强实时性等技术价值。在边缘计算与工业物联网场景中,它被广泛用于PLC通信、传感器数据采集、HMI集成及远程固件升级(FOTA)等关键任务。针对ESP8266/ESP32等Wi-Fi微控制器平台,modbus-esp8266库提供了完整协议栈支持,涵盖多实例并发、回调驱动架构、零拷贝

weixin_42315569的博客 349

六大原则之依赖倒转(倒置)原则

1. 依赖倒转(倒置)原则 介绍 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转(倒置)的中心思想是面向接口编程 依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在 java 中,抽象指的是接口或抽象类,细节就是具体的实现类 使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成 2. 传统的调用方法 pack

小松de博客 3211

Fluent求解器——湍流参数的设置

Fluent湍流参数的介绍和设置。

Ronko_G的博客 4万+

3. 依赖倒转原则

我们在日常开发代码中,写的方法,里面是不是经常会看到参数是接口的形式,比如我们要接收一个collection集合,但是在实现的时候是不是可以把list传进去。是对象间耦合度最弱的一种关联方式,在代码中,某个类的方法通过局部变量,方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。依赖倒转原则是开闭原则的一种实现,大家可以想一想,开闭原则的内容:对扩展开放,对修改关闭。继承关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系,是一种继承关系。

m0_68765858的博客 650

【vLLM-性能洞察】基于Ascend Profiler的端到端推理瓶颈定位与优化实践

本文详细介绍了如何利用Ascend Profiler对vLLM-Ascend大模型推理服务进行端到端的性能瓶颈定位与优化。通过实战案例,阐述了从数据采集、可视化分析到诊断低效算子、内存管理、计算通信重叠及框架调度等常见瓶颈的全过程,为基于昇腾NPU的AI推理性能调优提供了系统性的方法论和实用工具指南。

cc789的博客 521

排列显示阿拉伯语、数字及英文时的处理方法

这段时间参与开发沙特阿拉伯的网站模板,模板使用的语言是阿拉伯语,其显示顺序为从右到左,而中文、数字及英文的显示顺序为从左到右 ,所以当遇到一行文字内既有阿拉伯语又有数字和英文时会出现语序混乱的问题,如 期待显示的文案为: 按顺序写入,对应的代码如以下,其中currency_pay为变量,值为356SAR <span>الدفع الفعلي:{{currency_pay}}</span> 显示为 الدفع الفعلي : 356SAR 金额356和货币符号SAR分开了,这样显

llq886的博客 5804

1.3 依赖倒转原则

方式1:通过接口传递实现依赖方式2:通过构造方法依赖传递方式3:通过setter方法传递。

u013559614的博客 231

实战演练:用wvp-GB28181-pro + ZLMediaKit搭建一个可用的国标视频监控测试环境(附设备模拟器对接)

本文详细介绍了如何使用wvp-GB28181-pro和ZLMediaKit在Ubuntu系统上搭建GB28181视频监控测试环境。从环境准备、组件解析到核心服务部署与设备模拟器对接,提供完整的实战指南,帮助开发者快速构建可验证的监控系统。

weixin_42692935的博客 580

Java学习第3天-依赖倒转原则

依赖倒转原则 基本介绍 依赖倒转原则(Dependence Inversion Principle)是指: 1) 高层模块不应该依赖低层模块,二者都应该依赖其抽象 2) 抽象不应该依赖细节,细节应该依赖抽象 3) 依赖倒转(倒置)的中心思想是面向接口编程 4) 依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的 多。以抽象为基础搭建的架构比以细节为基础...

xinlingmen的专栏 175

忘记安卓锁屏密码怎么办?3种方法教你用ADB恢复访问(含gesture.key解密)

本文详细解析了安卓设备锁屏密码的存储与加密机制,特别是gesture.key文件的解密原理。针对遗忘密码的常见问题,提供了三种核心恢复方法:利用ADB调试接口删除密码文件、对gesture.key进行离线分析与解密,以及应对高版本系统的替代方案。重点介绍了通过ADB工具在Recovery模式下操作的具体步骤,帮助用户在合法合规前提下恢复设备访问权限。

php55的博客 959

硬件工程师进阶之路:从电路基础到PCB设计实战核心技能

硬件电路设计是一项融合电路理论、器件特性与工程实践的复合型技术。一块稳定可靠的电路板,不仅需要正确的原理图,更依赖于合理的叠层规划、元器件布局与布线策略。在高速数字电路日益普及的今天,信号完整性、电源完整性与电磁兼容性设计已成为决定产品成败的关键因素,工程师需要深入理解阻抗匹配、回流路径、去耦电容布置等技术原理,并将理论灵活应用于通信设备、消费电子、工业控制等各类产品研发场景。PCB设计正是连接电原理图与可量产产品之间的核心枢纽,也是硬件工程师能力进阶过程中的分水岭技能。掌握从基础电路分析到高速PCB设计,

weixin_29183637的博客 261

设计模式七大原则 (3)——依赖倒转原则

文章目录一、定义二、应用举例2.1 方式一2.2 方式二三、依赖关系传递的三种方式3.1 方式一:接口传递3.2 方式二:构造方法传递3.3 方法三:setter方法传递四、注意事项和细节参考信息 一、定义 高层模块不应该依赖低层模块,二者都应该依赖它们的抽象 抽象不应该依赖细节,细节反而需要依赖抽象 依赖倒转的中心思想使是面向接口编程 依赖倒转原则所基于的设计理念 : 相较于细节的多变性,抽象的东西稳定的多;以抽象为基础的架构比以细节为基础的架构要稳定的多 在Java中,抽象指的是接口或抽象类,细节是

星辰之眼 296

内存越界一定会导致程序崩溃吗?详解内存越界

本文详细解释了内存越界不一定导致内存越界的问题,全面介绍了C++内存越界的相关内容。

dvlinker的技术专栏 2万+

依赖倒转原则_3. 设计模式之原则

设计模式之原则在最先接触设计模式的时候,我就看到了对「开闭原则」的介绍,后续又陆陆续续接触了「单一职责原则」、「迪米特法则」等等,今天在这里对设计模式的各原则进行一个统一的记录。单一职责原则开放-封闭原则里式代换原则依赖倒转原则迪米特法则接口隔离原则单一职责原则 单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因。这个原则说的就是一个类只关注一件事情,我们经常会看到这个原则,比如我...

weixin_39640762的博客 93

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

设计模式原则篇(3):依赖倒转原则---Dependence Inversion Principle

依赖倒转原则,听名字感觉就十分的奇怪。“依赖”是什么?为什么要到转呢?理解这些         首先要从"依赖倒转原则"的定义入手。                 依赖倒转原则:                          高层模块不应该依赖于底层模块,而是应该依赖于抽象;抽象不应该依赖于具体的                  细节;细节应该依赖于抽象。

LCore的专栏 1736

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

3.5 C++ 纯虚函数、抽象类 3.6 依赖倒转原则

java、python:继承抽象类的的子类。一个类内有纯虚函数,这个类就叫抽象类;充当功能接口或者类接口。

qq_58170320的博客 245

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

3. 目标精通--用java写设计模式:依赖倒转原则

文章目录1. 什么是依赖倒转原则2. 实例3. 改进 1. 什么是依赖倒转原则 高层模块不应该依赖于低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖于抽象.抽象指的就是抽象类和接口 其中心思想就是面向接口编程 使用接口和抽象类的目的是制定规范,而不设计任何具体的操作,把细节交给实现类去完成 通俗来讲就是,我们不应该创建一个孤零零的类,而应该创建接口,规定好方法,以及每个方法的功能,然后具体的方法实现由实现类操作,而我们在就进行方法调用时,应该是通过接口来调用方法,而不是直接new一个实现类

small_clear的博客 314

设计模式(3) --依赖倒转原则

文章目录基本介绍案例不按照依赖倒置原则的代码使用依赖倒转完善上面案例依赖关系传递的三种方式方式1:接口传递依赖 基本介绍 案例 不按照依赖倒置原则的代码 //完成Person接收消息的功能 public class DependecyInversion { public static void main(String[] args) { Person person = new Pers...

baidu_21349635的专栏 400

设计模式(3)之七大原则之依赖倒转

一、定义 依赖倒置原则的原始定义为: 高层模块不应该依赖低层模块,两者都应该依赖其抽象; 抽象不应该依赖细节,细节应该依赖抽象; 依赖倒装的中心思想就是:面向接口编程; 依赖倒置原则是实现开闭原则的重要途径之一,它降低了客户与实现模块之间的耦合。他的设计理念是这样子的,相对于细节的多变性,抽象的东西要稳定得多。以抽象为基础的架构比以细节搭建的架构要稳定得多。在java中,抽象指的就是接口或者是抽象类,细节就是具体的实现类。 使用接口或者抽象类的目的...

jokeMqc的博客 609

细说设计模式七大原则(3):依赖倒转原则

基本介绍 英文名:Dependence Inversion Principle 我们先要写出低耦合高内聚的代码,在java中需要遵循如下原则: 模块间的依赖通过抽象类或接口发生,实现类之间的依赖关系也是通过抽象类或接口产生(实现类之间不应发生直接的依赖关系),降低系统的耦合性 接口或抽象不依赖于实现类,但实现类依赖接口或抽象类,实现类对系统需要的功能具体实现,提高类的内聚程度 依赖倒转原则: 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转原则

渔夫的博客 485

设计模式六大原则(3):依赖倒转原则

来自:点击打开链接

惟楚有才 603

设计模式-OOD的设计原则(3)-"依赖倒转原则"

  "开-闭"原则是我们OOD的目标,达到这一目标的主要机制就是"依赖倒转原则".这个原则的内容是:要依赖于抽象,不要依赖于具体.      对于抽象层次来说,它是一个系统的本质的概括,是系统的商务逻辑和宏观的,战略性的决定,是必然性的体现;具体的层次则是与实现有关的算法和逻辑,一些战术性的决定,带有相当大的偶然性.传统的过程性系统设计办法倾向于使高层次的模块依赖于低层次的模块;抽象层次依赖于

zhy05的专栏 716

设计模式考前预习—3_单一职责原则,开放封闭原则,依赖倒转原则,迪米特法则。

单一职责原则

qq_43627886的博客 168
上一篇: 接口隔离_2
下一篇: 里氏替换_4
Be_nurturing
博客等级 码龄11年 7粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值