迪米特法则:用户知道的越少越好
C++实现如下:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
class AbstractBuild {
public :
virtual void sale() = 0;
virtual string getmQulity() = 0;
};
class BuildA :public AbstractBuild {
private :
string mQulity;
public :
BuildA() {
this->mQulity = "高品质";
}
virtual void sale() {
cout << this->mQulity << "已经被售卖" << endl;
};
virtual string getmQulity() {
return this->mQulity;
}
};
class BuildB :public AbstractBuild {
private:
string mQulity;
public:
BuildB() {
this->mQulity = "差品质";
}
virtual void sale() {
cout << this->mQulity << "已经被售卖" << endl;
};
virtual string getmQulity() {
return this->mQulity;
}
};
class MediumBuild {
public :
AbstractBuild* findBuild(string name) {
for (vector<AbstractBuild*>::iterator it = v.begin(); it != v.end(); it++) {
if (name == (*it)->getmQulity()) {
return (*it);
}
}
return NULL;
}
MediumBuild() {
v.push_back(new BuildA);
v.push_back(new BuildB);
}
~MediumBuild() {
for (vector<AbstractBuild*>::iterator it = v.begin(); it != v.end() ;it++) {
if ((*it) != NULL) {
delete (*it);
}
}
}
private :
vector<AbstractBuild*> v;
};
void test() {
MediumBuild m;
AbstractBuild* p = m.findBuild("高品质");
p->sale();
}
int main() {
test();
return 0;
}