浅谈C++ 设计模式的基本原则

 更新时间:2021年09月14日 10:46:36   作者:小羊的Debug  
这篇文章主要介绍了++ 设计模式的基本原则,主要的目标是实现最终目的,高内聚,低耦合,开放封闭原则类的改动是通过增加代码进行的,感兴趣的小伙伴可参考下面文章的具体内容

先上银行类案例代码如下:

#include<iostream> 
using namespace std; 
class BankWorker 
{ 
public: 
    void save() 
    { 
        cout << "存款" << endl; 
    } 
    void moveM() 
    { 
        cout << "取款" << endl; 
 
    } 
    void jiaofei() 
    { 
        cout << "缴费" << endl; 
    } 
 
}; 
class AbBankWorker 
{ 
public: 
    virtual void dothing() = 0; 
}; 
 
class SaveBanker :public AbBankWorker 
{ 
public: 
    virtual  void dothing() 
    { 
        cout << "存款" << endl; 
    } 
}; 
class MoveBanker :public AbBankWorker 
{ 
public: 
    virtual  void dothing() 
    { 
        cout << "取款" << endl; 
    } 
}; 
class SaveBanker :public AbBankWorker 
{ 
public: 
    virtual  void dothing() 
    { 
        cout << "缴费款" << endl; 
    } 
}; 
void main11() 
{ 
    BankWorker*bw = new BankWorker; 
    bw->jiaofei(); 
    bw->moveM(); 
    bw->save(); 
    cout << "hello..." << endl; 
    system("pause"); 
    return; 
     
} 
void main22() 
{ 
    AbBankWorker*bw = NULL; 
        bw=new MoveBanker; 
        bw->dothing(); 
        delete bw; 
    return; 
 
} 
void main() 
{ 
 
    main22(); 
     
    system("pause"); 
    return; 
} 

单一职责原则类的职责要单一,对外只提供一种功能,而引起内变化的原因都应该只有一个,就是依赖倒置原则依赖于抽象接口,不要依赖具体的实现类,也就是针对接口编程

#include<iostream> 
using namespace std; 
class HardDisk 
{public: 
    virtual void work(); 
}; 
 
class Memory 
{ 
public: 
    virtual void work(); 
}; 
class Cpu 
{ 
public: 
    virtual void work(); 
}; 
class ComPuter 
{ 
public: 
    ComPuter(HardDisk*m_handdisk, Memory*m_memory, Cpu*m_cpu) 
    { 
        m_handdisk = handdisk; 
        m_memory = memory; 
        m_cpu = cpu; 
    } 
public: 
    void work() 
    { 
        m_handdisk->work(); 
        m_memory->work(); 
        m_cpu->work(); 
    } 
private: 
    HardDisk*m_handdisk; 
        Memory*m_memory; 
        Cpu*m_cpu; 
}; 
 
class InterCpu :public Cpu 
{ 
public: 
    void work() 
    { 
        cout << "我是因特尔厂家" << endl; 
    } 
}; 
class XSDisk :public HardDisk 
{ 
public: 
    void work() 
    { 
        cout << "我是西数硬盘厂家" << endl; 
    } 
}; 
class JSDMem :public Memory 
{ 
public: 
    void work() 
    { 
        cout << "我是JSDMem厂家" << endl; 
    } 
}; 
void main() 
{ 
    HardDisk*handdisk=NULL; 
    Memory*memory=NULL; 
    Cpu*cpu=NULL; 
    handdisk = new XSDisk; 
    memory= new JSDMem; 
    cpu = new InterCpu; 
    ComPuter*mycomputer = new ComPuter(harddisk, memory, cpu); 
    mycomputer->work(); 
    delete mycomputer; 
    delete cpu; 
    delete  memory; 
    delete  harddisk; 
    cout << "hello" << endl; 
    system("pause"); 
    return; 
} 

接口隔离原则不应该强迫客户的程序依赖他们不需要的接口方法,一个接口应该是提供一种对外功能,不应该把所有的操作都封装到一个接口中去

里氏替换原则任何抽象类出现的地方都可以用它的实现类进行替换,实际就是虚拟机智语言级别,实现面向对象功能

优先使用组合而不是继承原则如果使用继承,会导致复位的任何变化,都可能影响此类的行为,如果使用对象组合,就降低了这种依赖关系

迪米特法则一个对象应当对其他对象尽可能少的了解,从而降低各个对象之间的耦合,提高系统的可维护性。例如,在一个程序中,各个模块之间相互调用时,通常会提供一个统一的接口来实现,这样其他模块不需要了解另外一个模块的内部实现细节,这样当一个模块内部的实现发生改变的时候,不会影响其他模块的使用黑盒原理。

到此这篇关于浅谈C++ 设计模式的基本原则的文章就介绍到这了,更多相关C++ 设计模式的基本原则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Matlab绘制洛伦兹吸引子相图

    基于Matlab绘制洛伦兹吸引子相图

    洛伦兹吸引子(Lorenz attractor)是由MIT大学的气象学家Edward Lorenz在1963年给出的。本文将利用Matlab实现洛伦兹吸引子相图的绘制,感兴趣的可以了解一下
    2022-04-04
  • 浅析C++标准库元组(tuple)源码

    浅析C++标准库元组(tuple)源码

    这篇文章主要介绍了C++标准库元组(tuple)源码,介绍了什么是元组以及用法,并进行了源码分析,需要的朋友可以参考下
    2015-08-08
  • 深入了解C++封闭类的定义与使用

    深入了解C++封闭类的定义与使用

    一个类的成员变量如果是另一个类的对象,就称之为“成员对象”。包含成员对象的类叫封闭类(enclosed class)。本文主要和大家聊聊C++封闭类的使用,需要的可以参考一下
    2022-11-11
  • C语言的常量和字符串

    C语言的常量和字符串

    这篇文章主要为大家介绍了C语言常量和字符串,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • C语言实现简单餐饮管理与点餐系统

    C语言实现简单餐饮管理与点餐系统

    这篇文章主要为大家详细介绍了C语言实现简单餐饮管理与点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C语言字符串常用处理函数小结

    C语言字符串常用处理函数小结

    C语言中有很多内置的字符串处理函数,这些函数都在<string.h>头文件中声明,本文给大家介绍C语言字符串常用处理函数小结,感兴趣的朋友一起看看吧
    2023-11-11
  • C++如何解决rand()函数生成的随机数每次都一样的问题

    C++如何解决rand()函数生成的随机数每次都一样的问题

    这篇文章主要介绍了C++如何解决rand()函数生成的随机数每次都一样的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • QML与C++交互的实现步骤

    QML与C++交互的实现步骤

    本文主要介绍了QML与C++交互的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++如何实现字符串的部分复制

    C++如何实现字符串的部分复制

    这篇文章主要介绍了C++如何实现字符串的部分复制问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • c++中虚函数和纯虚函数的作用与区别

    c++中虚函数和纯虚函数的作用与区别

    这篇文章主要介绍了c++中虚函数和纯虚函数的作用与区别,需要的朋友可以参考下
    2014-07-07

最新评论