随笔 - 51, 文章 - 1, 评论 - 41, 引用 - 0
数据加载中……

工艺——使用辅助类表示构建函数的参数

场景:类的配置数据多并且形式多变,这样构造函数的样式就会膨胀。由于配置数据不需要修改,因此也不适合采用先创建再添加修改的方式,此外这个方式分成多步,缺失连贯性。

方法:使用一个辅助类,用于构建多样的参数。其数据添加函数可返回自身引用,用于连续添加数据。然后将辅助类作为主类的构造函数的参数。如

class BigClass {
public:
    class Param {
    friend class BigClass;
    public:
        Param() {}
        Param& Add(int d) {
            m_Data.push_back(d);
            return *this;
        };
        Param& Add(const char* s) {
            m_Data.push_back(atoi(s));
            return *this;
        }
    protected:
        std::vector<int> m_Data;
    };
public:
    BigClass(const Param& p) : m_Data(p.m_Data) { }
protected:
    std::vector<int> m_Data;
};

int main()
{
    BigClass bc(BigClass::Param().Add(1).Add("12").Add(3));
    return 0;
};

posted on 2014-12-26 21:21 lemene 阅读(144) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理