值对象

作者: 陈成_Adam | 来源:发表于2021-02-08 16:47 被阅读0次

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

class MyClass {
public:
    MyClass();

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

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

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

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

有没有更简单的只读对象呢?

答案肯定的,就是使用值对象,通过类的构造函数来设置属性。

class MyClass {
public:
    MyClass(const QString &property1,
            const QString &perperty2);

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

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

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

本文转载自:https://cloud.tencent.com/developer/article/1502141

相关文章

  • 百问中台:基于DDD的中台值对象

    概述 值对象由两个word组成:值+对象。值对象=值+对象,即一个值用对象的方式进行表述,来表达一个具体的固定不变...

  • web前端 -- Day18 js基础

    设置元素的样式方式 对象.style.属性=值; 对象.ClassName=值; 对象.style="属性:值”;...

  • 第 4 章:表达式

    粗略的把左值和右值理解成:左值是对象本身,右值是对象的值。操作左值就是用了对象本身,修改左值就是修改了对象本身的内...

  • 对象值

    async await的执行顺序

  • 值对象

    一般我们操控类内属性都是get和set方法,很常用也很好用。 但是我们在操控类的过程中,自己不小心或第三方接口使用...

  • c++左值和右值那些事

    当一个对象被用作右值时,用的是对象的值(内容);当对象被用作左值时,用的是对象的身份(在内存中的位置) 右值=值内...

  • python 自定义属性的访问机制

    内置函数: setattr :给对象设置属性getattr:获取对象竖属性值delattr :删除对象属性值

  • 你理解js中map,set,array.from()吗

    1.Js中Map对象的使用(es6新增) Map对象保存键/值对,是键/值对的集合。任何值(对象或者原始值) 都可...

  • js的map对象实现对数组中某一项数据的分组

    1.Js中Map对象的使用(es6新增) Map对象保存键/值对,是键/值对的集合。任何值(对象或者原始值) 都可...

  • JavaScript启示录笔记

    对象是由存储值的已经命名的属性组成。2.JavaScript中很多对象都可以表现得像对象,复杂值是对象,原始值可以...

网友评论

      本文标题:值对象

      本文链接:https://www.haomeiwen.com/subject/cqcfxltx.html