设计模式基本原则,最终目的,高内聚,低耦合,开放封闭原则类的改动是通过增加代码进行的,不是修改源代码。
设计模式基本原则
最终目的,高内聚,低耦合
开放封闭原则类的改动是通过增加代码进行的,不是修改源代码
银行类案例代码
- #include<iostream>
- usingnamespacestd;
- classBankWorker
- {
- public:
- voidsave()
- {
- cout<<"存款"<<endl;
- }
- voidmoveM()
- {
- cout<<"取款"<<endl;
- }
- voidjiaofei()
- {
- cout<<"缴费"<<endl;
- }
- };
- classAbBankWorker
- {
- public:
- virtualvoiddothing()=0;
- };
- classSaveBanker:publicAbBankWorker
- {
- public:
- virtualvoiddothing()
- {
- cout<<"存款"<<endl;
- }
- };
- classMoveBanker:publicAbBankWorker
- {
- public:
- virtualvoiddothing()
- {
- cout<<"取款"<<endl;
- }
- };
- classSaveBanker:publicAbBankWorker
- {
- public:
- virtualvoiddothing()
- {
- cout<<"缴费款"<<endl;
- }
- };
- voidmain11()
- {
- BankWorker*bw=newBankWorker;
- bw->jiaofei();
- bw->moveM();
- bw->save();
- cout<<"hello..."<<endl;
- system("pause");
- return;
- }
- voidmain22()
- {
- AbBankWorker*bw=NULL;
- bw=newMoveBanker;
- bw->dothing();
- deletebw;
- return;
- }
- voidmain()
- {
- main22();
- system("pause");
- return;
- }
单一职责原则类的职责要单一,对外只提供一种功能,而引起内变化的原因都应该只有一个
依赖倒置原则依赖于抽象接口,不要依赖具体的实现类,也就是针对接口编程
- #include<iostream>
- usingnamespacestd;
- classHardDisk
- {public:
- virtualvoidwork();
- };
- classMemory
- {
- public:
- virtualvoidwork();
- };
- classCpu
- {
- public:
- virtualvoidwork();
- };
- classComPuter
- {
- public:
- ComPuter(HardDisk*m_handdisk,Memory*m_memory,Cpu*m_cpu)
- {
- m_handdisk=handdisk;
- m_memory=memory;
- m_cpu=cpu;
- }
- public:
- voidwork()
- {
- m_handdisk->work();
- m_memory->work();
- m_cpu->work();
- }
- private:
- HardDisk*m_handdisk;
- Memory*m_memory;
- Cpu*m_cpu;
- };
- classInterCpu:publicCpu
- {
- public:
- voidwork()
- {
- cout<<"我是因特尔厂家"<<endl;
- }
- };
- classXSDisk:publicHardDisk
- {
- public:
- voidwork()
- {
- cout<<"我是西数硬盘厂家"<<endl;
- }
- };
- classJSDMem:publicMemory
- {
- public:
- voidwork()
- {
- cout<<"我是JSDMem厂家"<<endl;
- }
- };
- voidmain()
- {
- HardDisk*handdisk=NULL;
- Memory*memory=NULL;
- Cpu*cpu=NULL;
- handdisk=newXSDisk;
- memory=newJSDMem;
- cpu=newInterCpu;
- ComPuter*mycomputer=newComPuter(harddisk,memory,cpu);
- mycomputer->work();
- deletemycomputer;
- deletecpu;
- deletememory;
- deleteharddisk;
- cout<<"hello"<<endl;
- system("pause");
- return;
- }
接口隔离原则不应该强迫客户的程序依赖他们不需要的接口方法,一个接口应该是提供一种对外功能,不应该把所有的操作都封装到一个接口中去
里氏替换原则任何抽象类出现的地方都可以用它的实现类进行替换,实际就是虚拟机智语言级别,实现面向对象功能
优先使用组合而不是继承原则如果使用继承,会导致复位的任何变化,都可能影响此类的行为,如果使用对象组合,就降低了这种依赖关系
迪米特法则一个对象应当对其他对象尽可能少的了解,从而降低各个对象之间的耦合,提高系统的可维护性。例如,在一个程序中,各个模块之间相互调用时,通常会提供一个统一的接口来实现,这样其他模块不需要了解另外一个模块的内部实现细节,这样当一个模块内部的实现发生改变的时候,不会影响其他模块的使用黑盒原理。
©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经