关于依赖倒置原则的依赖问题

redoffice redoffice 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
经典例子是开关电灯例子

我现在换成总经理和秘书的情况,其实一样。

强耦合阶段:

总经理 依赖 秘书

即总经理类中有私有成员变量 秘书
秘书改变,则意味着总经理类需要改变。这是不好的设计。
依赖倒转告诉我们说高层不应该依赖低层,二者都应该依赖抽象

那么现在让总经理也依赖抽象,让秘书也依赖抽象,因此定义一个抽象类:比如员工类


class Iemployee
{
virtual void Interpret()=0;//秘书能翻译
virtual void Carry()=0;//助理能拎包
virtual void Drive()=0;//司机能开车
virtual void Design()=0;//设计师能设计新产品
virtual void Record()=0;//员工在开会的时候都需要做记录
};


用秘书类,助理类,司机类,设计师类 继承于这个抽象类,并实现该类。

这样达到了总经理也依赖抽象,秘书也依赖抽象了。如果换了秘书,比如一个女秘书换成了男秘书,直接修改秘书类就可以了,而不用去修改抽象类接口以及总经理类,达到了依赖倒转原则的目的。
但是在C++实现中,有个问题是如果总经理类中有Iemployee这样一个成员变量,Iemployee类是抽象类,抽象类是不能够实例化的。

对于这样的问题如何解决?
请高手指点,或者我对依赖倒转原则的理解有偏差?
...全文

相关推荐

PHP面向对象五大原则之依赖倒置原则(DIP)详解

本文实例讲述了PHP面向对象五大原则之依赖倒置原则(DIP)。分享给大家供大家参考,具体如下: 什么是依赖倒置呢?简单地讲就是将依赖关系倒置为依赖接口,具体概念如下: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象(父类不能依赖子类,它们都要依赖于抽象类) 2.抽象不能依赖于具体,具体应该要依赖于抽象。 注意,这里的接口不是狭义的接口。 为什么要依赖接口?因为接口体现对问题的抽象,同时由于抽象一般是相对稳定的或者是相对变化不频繁的,而具体是易变的。因此依赖抽象是实现代码扩展和运行期内绑定(多态)的基础:只要实现了该抽象类的子类,都可以被类的使用都使用。这里,强调一下扩展性这个概念。通

weixin_38686245

程序设计六大原则及代码样例

本文档非常详细的介绍了程序设计六大原则的定义,问题由来,解决方案及代码样例。

SuperXTech极客部落

.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)

依赖倒置原则(DIP) 依赖倒置(Dependency Inversion Principle,缩写DIP)是面向对象六大基本原则之一。他是指一种特定的的解耦形式,使得高层次的模块不依赖低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象. 该原则规定: 高层次的模块不应该依赖低层次模块,二者都应该依赖其抽象接口. 抽象接口不应该依赖于具体实现,而具体实现则应该依赖于抽象接口. 通过如下一个简单的示例,我们来看一下,我们通过一个简单地下单流程向我们的用户发送相关的短信或者邮件. public SendingEmail { public vo

weixin_38718415

依赖注入IOC

详细介绍了ioc的概念,运用.这本书是英文版

gj12345

软件设计原则.pptx

软件设计原则

梵天的佑翊
评论 16
收藏 已收藏
分享
返回顶部
redoffice
模式及实现 5,529 成员 4,167 内容