Star_Tool: tool包下getter_setter依赖设置器(类似C#的get、set)

        大纲链接:

        Star_Tool:一个C++跨Windows和Linux的工具库_菜鸟小田的博客-CSDN博客

        之前有了一篇旧的博客,直接贴过来了,是我一开始写这个getter_setter的时候写的,现在添加一些使用方法文档。当前的工具是基于代理模式设计的依赖注入与获取器

        贴出star::getter_setter 公共调用接口,逐一说明公共接口功能:

        

getter_setter();
getter_setter(DATA_TYPE data);
template<typename...Args>
getter_setter(Args...args);
getter_setter(DATA_TYPE data, std::function<DATA_TYPE(DATA_TYPE)> getter, std::function<DATA_TYPE(DATA_TYPE)> setter);
getter_setter(std::function<DATA_TYPE(DATA_TYPE)> getter, std::function<DATA_TYPE(DATA_TYPE)> setter);
getter_setter(const getter_setter<DATA_TYPE>& CopySource);
getter_setter(getter_setter<DATA_TYPE>&& MoveSource);
~getter_setter();
getter_setter<DATA_TYPE>& change_setter(std::function<DATA_TYPE(DATA_TYPE)> setter);    //修改setter,流式依赖注入器
getter_setter<DATA_TYPE>& change_getter(std::function<DATA_TYPE(DATA_TYPE)> getter);    //修改getter,流式依赖注入器
getter_setter& operator =(DATA_TYPE data);
operator DATA_TYPE();
DATA_TYPE move();
DATA_TYPE copy();
DATA_TYPE& ref();       //!!危险方法,在修改引用时会略过setter过滤器,这应仅仅用于调用DATA_TYPE的函数。
using type = DATA_TYPE;

getter_setter() 

        默认构造函数,会将依赖注入器与依赖获取器直接调用默认的依赖注入,并且将数据根据默认构造函数{}进行基本构造。(所以DATA_TYPE必须拥有默认构造函数)

getter_setter(DATA_TYPE data);

        带有数据拷贝的构造函数,会调用数据的拷贝构造函数(所以DATA_TYPE必须拥有拷贝或等效函数才能调用该函数),与第一个默认构造函数只有这点不同,相同的是其依赖注入器与依赖获取器直接调用默认的依赖注入函数。

template<typename...Args>
getter_setter(Args...args);

        模板多参数的初始化构造函数,会将参数args直接根据顺序调用数据DATA_TYPE的构造函数完成数据的初始化操作。与第一个默认构造函数只有这点不同,相同的是其依赖注入器与依赖获取器直接调用默认的依赖注入函数。

getter_setter(DATA_TYPE data,

std::function<DATA_TYPE(DATA_TYPE)> getter,

std::function<DATA_TYPE(DATA_TYPE)> setter);

        构造函数,可以自定义依赖设置器和依赖获取器,完成对依赖数据获取和设置的过滤操作。其data是用于调用DATA_TYPE的拷贝函数(所以DATA_TYPE必须拥有拷贝或等效函数才能调用该函数)。

getter_setter(std::function<DATA_TYPE(DATA_TYPE)> getter, std::function<DATA_TYPE(DATA_TYPE)> setter);

        构造函数,只能自定义依赖设置器和依赖获取器,完成对依赖数据获取和设置的过滤操作。其内部数据会调用默认构造函数(所以DATA_TYPE必须拥有默认构造函数)。

getter_setter(const getter_setter<DATA_TYPE>& CopySource);

        拷贝构造函数,会拷贝依赖获取器和依赖注入器以及数据本身(所以DATA_TYPE必须拥有拷贝或等效函数才能调用该函数)。

getter_setter(getter_setter<DATA_TYPE>&& MoveSource);

        暂时与拷贝构造函数效果相同,无特化。

~getter_setter();

        默认析构函数,无功能。

getter_setter<DATA_TYPE>& change_setter

(std::function<DATA_TYPE(DATA_TYPE)> setter);

        修改依赖注入器setter,需要满足流式依赖注入器。

getter_setter<DATA_TYPE>& change_getter

(std::function<DATA_TYPE(DATA_TYPE)> getter);  

         修改依赖获取器getter,需要满足流式依赖注入器

getter_setter& operator =(DATA_TYPE data);

        重载了代理的赋值符号,会将data数据走一遍依赖注入器后才把数据注入该容器。

operator DATA_TYPE();

        重载了代理的隐式转化,会将data数据走一遍依赖获取器后才把数据返回给调用者。

DATA_TYPE move();

        会将容器内数据以std::move的方式走一遍依赖获取器才把数据返回给调用者。

DATA_TYPE copy();

        会将容器内数据以copy拷贝的方式走一遍依赖获取器才把数据返回给调用者。

DATA_TYPE& ref();

      !!危险方法,会直接返回数据的引用,在修改引用时会略过setter过滤器,这应仅仅用于调用DATA_TYPE的函数。

using type = DATA_TYPE;

        类内遍历类型的静态存储。可以静态获取其内部的数据类型。

        最后再贴上该工具的运行内部流程图:

 更多编写原理和运行示例代码详见:

C++ 类设计小工具,依赖设置器(类似C#的get、set)_菜鸟小田的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值