当前位置: 首页 > news >正文

网页设计建设网站模板php网站制作报价

网页设计建设网站模板,php网站制作报价,wordpress2012主题二次开发,如何制作视频【设计模式】如何用C实现依赖倒置 一、什么是依赖倒置#xff1f; 依赖倒置原则#xff08;Dependency Inversion Principle#xff0c;DIP#xff09;是SOLID面向对象设计原则中的一项。它的核心思想是#xff1a; 高层模块不应该依赖于低层模块#xff0c;两者都应该…【设计模式】如何用C实现依赖倒置 一、什么是依赖倒置 依赖倒置原则Dependency Inversion PrincipleDIP是SOLID面向对象设计原则中的一项。它的核心思想是 高层模块不应该依赖于低层模块两者都应该依赖于抽象。抽象不应该依赖于细节细节应该依赖于抽象。 这个原则的目的在于减少代码耦合性使代码更具灵活性和扩展性。按照依赖倒置原则我们让上层的逻辑不直接依赖底层实现而是通过抽象接口或抽象类来控制两者之间的关系。 二、为什么使用依赖倒置 在没有依赖倒置的设计中高层模块如业务逻辑往往会直接依赖于低层模块如数据访问、服务调用。这种依赖会使得高层模块无法独立更改一旦低层模块发生变动所有依赖它的高层模块都需要跟着修改导致代码维护难度和出错率增加。 通过依赖倒置可以实现以下特性 更易于扩展可以随时替换低层模块的实现而不需要改动高层模块。增强测试性可以方便地替换低层模块便于Mock或打桩提升了代码的可测试性。提高灵活性可以根据需求切换不同的实现方便扩展和维护。 三、实现步骤 定义抽象接口基类定义一个抽象类Service.h实现了一个Test纯虚函数此抽象类不实现任何具体逻辑仅对外提供接口 Service.h #ifndef DIP_SERVICE #define DIP_SERVICEnamespace DIP {class Service{public:virtual ~Service() default;virtual void Test() 0;}; }#endif实现接口的具体类定义一个实现类ServiceImpl实现构造、析构、Test等函数逻辑。 ServiceImpl.h #ifndef DIP_SERVICEIMPL #define DIP_SERVICEIMPL #include Service.hnamespace DIP {class ServiceImpl : public Service{public:ServiceImpl(int a);~ServiceImpl() override;void Test() override;private:int m_a;}; }#endifServiceImpl.cpp #include ServiceImpl.h #include iostreamusing namespace DIP;ServiceImpl::ServiceImpl(int a) : m_a(a) {std::cout In ServiceImpl, m_a m_a . std::endl; }ServiceImpl::~ServiceImpl() {std::cout In ~ServiceImpl, m_a m_a . std::endl; }void ServiceImpl::Test() {m_a;std::cout In Test, m_a m_a . std::endl; }注入依赖通过构造函数依赖注入将实现DIP::Service接口的对象传入将具体实现传递给高层模块的接口指针或引用从而对具体实现DIP::ServiceImpl解耦。 main.cpp #include ServiceImpl.h #include Service.h #include memoryint main() {int a 3;std::shared_ptrDIP::Service serviceImpl std::make_sharedDIP::ServiceImpl(a);serviceImpl-Test(); }在这种设计中高层的main函数依赖于抽象接口Service而不是具体的实现类。这样只要继承了Service接口的实现类都可以被使用。这就是依赖倒置带来的灵活性和扩展性。 四、完整实现 在以上三点的基础上继续编写CMakeLists.txt文件。 # 设置项目名称和最低CMake版本 cmake_minimum_required(VERSION 3.10) set(ProjectName Service) project(${ProjectName})set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True)add_executable(${ProjectName} main.cpp ServiceImpl.cpp)此时代码结构如下。 命令行编译执行。 mkdir build cd build cmake .. make -j12 ./Service执行结果。 In ServiceImpl, m_a 3. In Test, m_a 4. In ~ServiceImpl, m_a 4.可以看到Service指针在不感知ServiceImpl具体实现的情况下仅通过调用接口实现了和ServiceImpl实例相同的功能。 ​
http://www.w-s-a.com/news/69001/

相关文章:

  • 做网站cookie传值dedecms网站后台
  • 温州网站推广网站建设要学会什么
  • c 网站开发框架品牌策划方案范文
  • 儿童摄影作品网站多元网络兰州网站建设
  • 电脑上不了建设厅网站常德网站建设费用
  • 做单页免费模板网站最新办公室装修风格效果图
  • 中国铁路建设投资公司网站熊学军想开网站建设公司
  • 优化一个网站多少钱网站开发北京
  • html教学关键词优化价格
  • 黄冈论坛网站有哪些给wordpress首页添加公告栏
  • 初中做数学题的网站做淘宝必备网站
  • 买拆车件上什么网站谁有那种手机网站
  • 一家专做有机蔬菜的网站万户网络是干嘛的
  • 十堰百度网站建设八宝山做网站公司
  • 地区电商网站系统建筑施工图纸培训班
  • 网站外包维护一年多少钱医院网站 功能
  • 电子商务市场的发展前景seo推广平台服务
  • 乐清网页设计公司哪家好seo推广任务小结
  • 360建筑网是什么pc优化工具
  • 越秀免费网站建设风景区网站建设项目建设可行性
  • 网站建站公司一站式服务学校网站开发招标
  • asp.net mvc 5 网站开发之美电商网站 流程图
  • 室内设计素材网站推荐郑州专业做淘宝网站建设
  • 新建的网站怎么做seo优化模板规格尺寸及价格
  • 平湖网站设计做电子元器件销售什么网站好
  • 可视化网站模板我想建个网站网站怎么建域名
  • 达州网站建设qinsanw南京市建设发展集团有限公司网站
  • django 网站开发实例公司排行榜
  • 韩国做美食网站阳江网站建设 公司价格
  • 网站开发哪里接业务长春高端模板建站