前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于值对象的思考

关于值对象的思考

作者头像
Qt君
发布2019-09-10 16:03:11
1.2K0
发布2019-09-10 16:03:11
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

使用值对象模式的好处。

  一般我们操控类内属性都是get和set方法,很常用也很好用。

代码语言:javascript
复制
class MyClass {
public:
    MyClass();

    void setProperty1(const QString &value);
    QString getProperty1() const;

    void setProperty2(const QString &value);
    QString getProperty2() const;
}

  但是我们在操控类的过程中,自己不小心或第三方接口使用者误调用了set方法导致MyClass类内状态发生变化,这个是我们不想要的。

  应该对类加以限制,那么该如何限制。这时候我们可以用Builder模式,它是一个只读对象,但Builder模式使用起来比较繁琐。

  有没有更简单的只读对象呢? 答案肯定的,就是使用值对象,通过类的构造函数来设置属性。

代码语言:javascript
复制
class MyClass {
public:
    MyClass(const QString &property1,
            const QString &perperty2);

    QString getProperty1() const;
    QString getProperty2() const;
};

  上面代码我们可以看到MyClass类不再提供设置属性的方法,只提供读的方法。如果需要设置MyClass类内属性只能通过重新创建MyClass的对象方式去设置,这方法就很好地避免被它人随便修改了。

  这种方法就像是Http请求一样,无状态,用起来让人感觉踏实安心,但是它有一个致命的缺点是构造函数参数不能过多。


关于更多

设计模式-流畅接口

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档