您的位置:首页 > 科技 > 能源 > 建造者模式 和 外观模式

建造者模式 和 外观模式

2024/12/23 8:49:34 来源:https://blog.csdn.net/qq_40666620/article/details/141325611  浏览:    关键词:建造者模式 和 外观模式

这两种模式很像, 都是将一个复杂的流程统一用一个方法进行包装, 方便外界使用.
建造者模式更像是 外观模式的一种特里, 只对一个类的复杂初始化流程进行包装

建造者模式

简介: 就是一个类的构造方法可能很复杂, 由于系统的限制等原因, 可能很多初始化逻辑不能放在构造函数里, 所以就需要一个类来统一这种构建流程, 让外界不需要知道具体的复杂构造逻辑, 就能获取目标类的实例.
代码


class Building
{
private:string foundation;string main_wall;string floor;
public:Building() {};void build_foundation() { cout << "must be first step" << endl;foundation = "create_foundation"; }void build_main_wall() { cout << "must be second step" << endl;main_wall = "build main wall"; }void build_floor() { cout << "must be third step" << endl;floor = "build floor"; }// 声明为友元函数, 可以访问私有变量friend ostream& operator << (ostream& os, const Building* b);
};ostream& operator << (ostream& os, const Building* b)
{os << b->foundation << "," << b->main_wall << "," << b->floor << endl;return os;
}class Builder
{
public:Builder() {};Building* build_building(){Building* b = new Building();b->build_foundation();b->build_main_wall();b->build_floor();return b;}
};int main()
{Builder* builder = new Builder();Building* building= builder->build_building();cout << building << endl;return 0;
}

执行结果
在这里插入图片描述

外观模式

简介: 外观模式: 一般情况下, 都是因为老系统比较负责, 用一个类统一包装一下业务逻辑, 方便新系统使用
比如打车到某个地方, 分为三个部分, 然后用一个方法统一执行这些步骤, 统一打车的业务逻辑
1: 网络约车
2: 验证手机尾号
3: 驾驶员驾驶汽车到达目的地
4: 付款

代码

class SystemCallCar
{
public:void run() { cout << "call car" << endl; }
};class SystemVertifyPhone
{
public:void run() { cout << "vertify phone" << endl; }
};class ReachTargetPlace
{
public:void run() { cout << "drive car reach target place"; }
};class Pay
{
public:void run() { cout << "pay money" << endl; }
};class Face
{
public:void run(){SystemCallCar* s1 = new SystemCallCar();SystemVertifyPhone* s2 = new SystemVertifyPhone();ReachTargetPlace* s3 = new ReachTargetPlace();Pay* s4 = new Pay();s1->run();s2->run();s3->run();s4->run();}
};int main()
{Face f;f.run();return 0;
}

执行结果
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com