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

设计模式基本原则

创新互联专注于阿城网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供阿城营销型网站建设,阿城网站制作、阿城网页设计、阿城网站官网定制、微信小程序定制开发服务,打造阿城网络公司原创品牌,更为您提供阿城网站排名全网营销落地服务。

最终目的,高内聚,低耦合

开放封闭原则类的改动是通过增加代码进行的,不是修改源代码

银行类案例代码

 
 
 
  1. #include
  2. using namespace std;
  3. class BankWorker
  4. {
  5. public:
  6.     void save()
  7.     {
  8.         cout << "存款" << endl;
  9.     }
  10.     void moveM()
  11.     {
  12.         cout << "取款" << endl;
  13.     }
  14.     void jiaofei()
  15.     {
  16.         cout << "缴费" << endl;
  17.     }
  18. };
  19. class AbBankWorker
  20. {
  21. public:
  22.     virtual void dothing() = 0;
  23. };
  24. class SaveBanker :public AbBankWorker
  25. {
  26. public:
  27.     virtual  void dothing()
  28.     {
  29.         cout << "存款" << endl;
  30.     }
  31. };
  32. class MoveBanker :public AbBankWorker
  33. {
  34. public:
  35.     virtual  void dothing()
  36.     {
  37.         cout << "取款" << endl;
  38.     }
  39. };
  40. class SaveBanker :public AbBankWorker
  41. {
  42. public:
  43.     virtual  void dothing()
  44.     {
  45.         cout << "缴费款" << endl;
  46.     }
  47. };
  48. void main11()
  49. {
  50.     BankWorker*bw = new BankWorker;
  51.     bw->jiaofei();
  52.     bw->moveM();
  53.     bw->save();
  54.     cout << "hello..." << endl;
  55.     system("pause");
  56.     return;
  57.     
  58. }
  59. void main22()
  60. {
  61.     AbBankWorker*bw = NULL;
  62.         bw=new MoveBanker;
  63.         bw->dothing();
  64.         delete bw;
  65.     return;
  66. }
  67. void main()
  68. {
  69.     main22();
  70.     
  71.     system("pause");
  72.     return;
  73. }

单一职责原则类的职责要单一,对外只提供一种功能,而引起内变化的原因都应该只有一个

依赖倒置原则依赖于抽象接口,不要依赖具体的实现类,也就是针对接口编程

 
 
 
  1. #include
  2. using namespace std;
  3. class HardDisk
  4. {public:
  5.     virtual void work();
  6. };
  7. class Memory
  8. {
  9. public:
  10.     virtual void work();
  11. };
  12. class Cpu
  13. {
  14. public:
  15.     virtual void work();
  16. };
  17. class ComPuter
  18. {
  19. public:
  20.     ComPuter(HardDisk*m_handdisk, Memory*m_memory, Cpu*m_cpu)
  21.     {
  22.         m_handdisk = handdisk;
  23.         m_memory = memory;
  24.         m_cpu = cpu;
  25.     }
  26. public:
  27.     void work()
  28.     {
  29.         m_handdisk->work();
  30.         m_memory->work();
  31.         m_cpu->work();
  32.     }
  33. private:
  34.     HardDisk*m_handdisk;
  35.         Memory*m_memory;
  36.         Cpu*m_cpu;
  37. };
  38. class InterCpu :public Cpu
  39. {
  40. public:
  41.     void work()
  42.     {
  43.         cout << "我是因特尔厂家" << endl;
  44.     }
  45. };
  46. class XSDisk :public HardDisk
  47. {
  48. public:
  49.     void work()
  50.     {
  51.         cout << "我是西数硬盘厂家" << endl;
  52.     }
  53. };
  54. class JSDMem :public Memory
  55. {
  56. public:
  57.     void work()
  58.     {
  59.         cout << "我是JSDMem厂家" << endl;
  60.     }
  61. };
  62. void main()
  63. {
  64.     HardDisk*handdisk=NULL;
  65.     Memory*memory=NULL;
  66.     Cpu*cpu=NULL;
  67.     handdisk = new XSDisk;
  68.     memory= new JSDMem;
  69.     cpu = new InterCpu;
  70.     ComPuter*mycomputer = new ComPuter(harddisk, memory, cpu);
  71.     mycomputer->work();
  72.     delete mycomputer;
  73.     delete cpu;
  74.     delete  memory;
  75.     delete  harddisk;
  76.     cout << "hello" << endl;
  77.     system("pause");
  78.     return;
  79. }

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

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

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

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

新闻标题:C++设计模式的基本原则
文章路径:http://www.stwzsj.com/qtweb/news32/4382.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联