当前位置: 首页 > news >正文

黄岩网站建设兼职哈尔滨模板建站定制网站

黄岩网站建设兼职,哈尔滨模板建站定制网站,深圳互助资金盘网站开发,中国建设集团总公司官网动机 在软件系统中#xff0c;有时候面临着“一个复杂对象”的创建工作#xff0c;其通常由各个部分的子对象用一定的算法构成#xff1b;由于需求的变化#xff0c;这个复杂对象的各个部分经常面临着剧烈的变化#xff0c;但是将它们组合在一起的算法却相对稳定。 如何…动机 在软件系统中有时候面临着“一个复杂对象”的创建工作其通常由各个部分的子对象用一定的算法构成由于需求的变化这个复杂对象的各个部分经常面临着剧烈的变化但是将它们组合在一起的算法却相对稳定。 如何应对这种变化如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化从而保持系统中的“稳定构建算法”不随着需求改变而改变 代码示例建立各种房子比如砖瓦房高楼别墅等房子 class House{//.... };class HouseBuilder { public:House* GetResult(){return pHouse;}virtual ~HouseBuilder(){} protected:House* pHouse;virtual void BuildPart1()0;virtual void BuildPart2()0;virtual void BuildPart3()0;virtual void BuildPart4()0;virtual void BuildPart5()0;};class StoneHouse: public House{};// 石头房子的创建override HouseBuilder里面的流程 class StoneHouseBuilder: public HouseBuilder{ protected:virtual void BuildPart1(){//pHouse-Part1 ...;}virtual void BuildPart2(){}virtual void BuildPart3(){}virtual void BuildPart4(){}virtual void BuildPart5(){}};// 房子具体构建过程 class HouseDirector{public:// 有一个HouseBuilder的指针HouseBuilder* pHouseBuilder;HouseDirector(HouseBuilder* pHouseBuilder){this-pHouseBuilderpHouseBuilder;}House* Construct(){ // 整个构建流程是稳定的pHouseBuilder-BuildPart1();for (int i 0; i 4; i){pHouseBuilder-BuildPart2();}bool flagpHouseBuilder-BuildPart3();if(flag){pHouseBuilder-BuildPart4();}pHouseBuilder-BuildPart5();return pHouseBuilder-GetResult();} };int main() {// 创建石头房子的建造者StoneHouseBuilder stoneHouseBuilder;// 创建房子Director并指定建造者HouseDirector houseDirector(stoneHouseBuilder);// 构建房子House* stoneHouse houseDirector.Construct();// 输出结果if (stoneHouse ! nullptr) {// 假设 House 类有适当的输出方法// 这里只是简单示例实际使用时需要根据具体类的实现调用相应的方法std::cout Stone House constructed. std::endl;} else {std::cout Failed to construct Stone House. std::endl;}// 释放资源delete stoneHouse;return 0; }上述代码涉及了Builder设计模式包括以下几个类 House 类: 表示待构建的产品即房子。在示例中StoneHouse 类是 House 的具体实现。 HouseBuilder 抽象类: 定义了构建产品房子的抽象接口。具体的建造者例如 StoneHouseBuilder需要继承这个抽象类并实现接口中的方法以完成具体产品的构建。 StoneHouseBuilder 类: 是HouseBuilder的具体实现负责构建石头房子。它通过实现抽象接口中的方法来完成具体的建造流程。 HouseDirector 类: 起到指导建造的作用通过构造函数接收一个具体的建造者对象。通过调用建造者的方法按照一定的构建流程组织建造者完成产品的构建。 main 函数: 在 main 函数中创建了 StoneHouseBuilder 的实例然后创建了一个HouseDirector的实例并将建造者传递给导演。通过导演的 Construct 方法按照一定的构建流程构建了石头房子并输出结果。 总体而言Builder设计模式的目的是将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。在这个示例中HouseBuilder 抽象类定义了构建房子的接口StoneHouseBuilder 实现了具体的石头房子构建流程而 HouseDirector 则负责协调建造者完成整个构建流程。 Builder要点总结 Builder 模式主要用于“分步骤构建一个复杂的对象”。在这其中“分步骤”是一个稳定的算法而复杂对象的各个部分则经常变化。 变化点在哪里封装哪里—— Builder模式主要在于应对“复杂对象各个部分”的频繁需求变动。其缺点在于难以应对“分步骤构建算法”的需求变动。 在Builder模式中要注意不同语言中构造器内调用虚函数的差别C vs. C#) 。 chatGPT给出的builder的例子 以下是一个简单的C示例代码演示Builder设计模式 #include iostream #include string// 产品类 class Product { public:void AddPart(const std::string part) {parts part ;}void Show() const {std::cout Product Parts: parts std::endl;}private:std::string parts; };// 抽象建造者类 class Builder { public:virtual void BuildPart1() 0;virtual void BuildPart2() 0;virtual Product* GetResult() 0; };// 具体建造者类 class ConcreteBuilder : public Builder { public:ConcreteBuilder() {product new Product();}void BuildPart1() override {product-AddPart(Part1);}void BuildPart2() override {product-AddPart(Part2);}Product* GetResult() override {return product;}private:Product* product; };// 指导者类 class Director { public:Director(Builder* builder) : builder(builder) {}void Construct() {builder-BuildPart1();builder-BuildPart2();}private:Builder* builder; };int main() {// 创建具体建造者ConcreteBuilder concreteBuilder;// 创建指导者并传入具体建造者Director director(concreteBuilder);// 指导者构建产品director.Construct();// 获取最终产品Product* product concreteBuilder.GetResult();// 展示产品if (product ! nullptr) {product-Show();delete product;}return 0; } 在这个示例中Product 表示最终构建的复杂对象Builder 是抽象建造者类ConcreteBuilder 是具体建造者类Director 是指导者类。通过指导者调用具体建造者的方法最终得到构建完成的产品。这个例子中的产品是简单的包含两个部分的字符串实际应用中可以根据需求定义更复杂的产品结构。
http://www.w-s-a.com/news/340084/

相关文章:

  • 复古风格网站网站套餐方案
  • 界面设计做的好的网站旅游商城网站模板
  • 大型电子商务网站 服务器硬件 cpu 内存 硬盘 2014美食网站开发意义
  • 建立网站的目的和意义网站建设寻求
  • 邢台手机网站建设设计师培训心得
  • 营销网站怎么做丽水微信网站建设哪家好
  • 南昌定制网站开发多少钱东阿县城市建设局网站
  • 浙江网站建设公司南昌seo招聘
  • 工业软件有哪些专业seo站长工具全面查询网站
  • 山东兴华建设集团有限公司网站和京东一样做电子产品的网站
  • 网站建设谢辞关于h5的网站模板
  • 网站改版提交WordPress360收录
  • 省级网站 开发建设 资质在国外怎么做网站
  • 中商华兴建设有限公司网站我的世界查找建筑网站
  • 广东网站设计公司百度推广免费送网站
  • 高密做网站哪家好网站建设预算
  • 免费wordpress网站模板重庆如何做聚政网站
  • 人才网站app建设建议系统开发生命周期法的优点表现
  • 门户网站想要微信登录怎么做湖南网站seo推广
  • 襄阳 网站建设管理系统网站
  • 重庆工程建设招标投标交易信息网广州外贸seo优化
  • 一个一起做网站东莞设计兼职网站建设
  • 杭州网站程序开发公司在哪个公司建设网站好
  • 网店的网站设计方案济南手机建站价格
  • 网站做了301重定向域名会自动跳转吗唐山地方志网站建设
  • 学校网站建设说明书海南省建设执业资格注册管理中心网站
  • 东莞哪家网站建设好网站风格设定
  • 自驾游网站模板搭建wordpress步骤
  • wordpress视频网站上传视频提升学历是什么意思
  • 江西省城乡建设厅建设网站浙江建设