设计模式原则:
(1)开放封闭原则:类的改动是通过增加代码完成,而不是修改代码
#include <iostream>
using namespce std;
class BankWorker
{
public:
virtual void show() = 0; //预留一个接口,用于其他类继承并实现功能
};
class GetMoney : public BankWorker
{
public:
void show()
{
cout << "GetMoney !" << endl;
}
};
class SaveMoney : public BankWorker
{
public:
void show()
{
cout << "SaveMoney !" << endl;
}
};
//此时若需增加功能,则增加子类继承于基类,无需修改已有代码
class TransformMoney : public BankWorker
{
public:
void show()
{
cout << "TransformMoney !" << endl;
}
};
int main()
{
BankWorker *b = new SaveMoney;//定义指针对象
b->show();
delete b; //及时释放
b = new GetMoney;
b->show();
delete b;
b = new TransformMoney;
b->show();
delete b;
return 0;
}
(2)依赖倒置原则:依赖于抽象(接口),不要依赖于具体的实现(类),也就是针对接口编程
#include <iostream>
using namespace std;
class CPU
{
public:
virtual void cpu_work() = 0;
};
class InterCPU : public CPU
{
public:
void cpu_work()
{
cout << "cpu_work !" << endl;
}
};
class HardDisk
{
public:
virtual void harddisk_work() = 0;
};
class AHardDisk : public HardDisk
{
public:
void harddisk_work()
{
cout << "harddisk_work !" << endl;
}
};
class Computer
{
private:
CPU *m_cpu;
HardDisk * m_harddisk;
public:
Computer(CPU *cpu,HardDisk *harddisk) //构造函数初始化
{
m_cpu = cpu;
m_harddisk = harddisk;
}
void show()
{
m_cpu->cpu_work(); //多态
m_harddisk->harddisk_work();
}
};
int main()
{
CPU *cpu = new InterCPU; //修改时可修改此处接口
HardDisk * harddisk = new AHardDisk;
Computer *c = new Computer(cpu,harddisk);
c->show();
delete c;
delete cpu;
delete harddisk;
return 0;
}