• C++通过内部类实现Builder模式


    在Java中有一个很好用的Builder模式实现方法。此处使用C++仿照Java的版本实现Builder模式。

    在C++中内部类和外部类是没有直接关系的,不能通过内部类访问外部类的私有对象也不能通过外部类访问内部类的私有对象。所以此处使用friend关键字来增强内部类对于外部类的访问,主要是访问外部类的私有构造函数。代码如下:

    #include <iostream>
    #include <memory>
    using namespace std;
    
    class BuilderDemo
    {
    public:
        class Builder
        {
        public:
            int servingSize;
            int servings;
            
            Builder(int servingSize, int servings)
            :servingSize(servingSize),servings(servings)
            {
            }
            
            shared_ptr<BuilderDemo> build()
            {
                return shared_ptr<BuilderDemo>(new BuilderDemo(*this));
            }
        };
        
    private:
        BuilderDemo(const Builder& builder)
        {
            servingSize = builder.servingSize;
            servings = builder.servings;
        }
        
        friend class Builder;
        
    private:
        int servingSize;
        int servings;
    };
    
    
    int main()
    {
        BuilderDemo::Builder builder(4, 43);
        shared_ptr<BuilderDemo> demo = builder.build();
    
    }

    此处省略了外部类的部分成员变量,一般情况当外部类的成员变量个数在4个以上的时候可以使用Builder模式。

  • 相关阅读:
    webpack
    线程和同步
    C#高性能TCP服务
    平台架构实践
    异步
    net MVC 的八个扩展点
    Python计算&绘图——曲线拟合问题(转)
    最小二乘法多项式曲线拟合原理与实现(转)
    Apache Commons Math3学习笔记(2)
    最小二乘法拟合java实现源程序(转)
  • 原文地址:https://www.cnblogs.com/vectorli/p/5405037.html
Copyright © 2020-2023  润新知