迪米特法则案例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23859701/article/details/81748941

原理:一个中介,客户只要找中介要满足的楼盘 ,而不必跟每个楼盘发生联系

#define _CRT_SCURE_NO_WARNINGS
#include<iostream>
using namespace std;
#include<string>
#include<vector>
class AbstractBuild
{
public:
    AbstractBuild(){}
    virtual void sale() = 0;
    virtual string getqulity() = 0;

};

class BuildA :public AbstractBuild{

public:
    BuildA(){
        mqulity = "高品质";
    }
    virtual void sale(){

        cout << mqulity << endl;
    }
    virtual string getqulity(){
        return mqulity;
    }
public:
    string mqulity;

};
class BuildC :public AbstractBuild{

public:
    BuildC(){
        mqulity = "低品质";
    }
    virtual void sale(){

        cout << mqulity << endl;
    }
    virtual string getqulity(){
        return mqulity;
    }
public:
    string mqulity;

};

//中介类
class Mediator{
public:
    Mediator(){
        AbstractBuild *d1 = new BuildA;
        Vbuild.push_back(d1);
        AbstractBuild *d2 = new BuildC;
        Vbuild.push_back(d2);
    }
    //对外提供接口
    AbstractBuild * findmybuild(string p){
        for (vector<AbstractBuild*>::iterator it1 = Vbuild.begin(); it1 != Vbuild.end(); it1++)
        {
            if ((*it1)->getqulity()==p)
            {
                return *it1;
            }

        }
        return NULL;
    }
    ~Mediator(){
        for (vector<AbstractBuild*>::iterator it = Vbuild.begin(); it != Vbuild.end(); it++)
        {
            if (*it != NULL)
            {
                delete *it;
            }

        }
    }
public:
    vector<AbstractBuild*> Vbuild;
};
//客户端
void test(void)
{
    Mediator *mediator = new Mediator;
    AbstractBuild *D = mediator->findmybuild("中高品质");
    if (D != NULL)
    {
        D->sale();
    }
    else
    {
        cout << "楼盘没有找到" << endl;
    }
}
int main(void){
    //迪米特原则 最小知识原则

    test();
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_23859701/article/details/81748941