C++创建型设计模式之 构造器模式

C++创建型设计模式之构造器模式

构造器模式简介

对于大多数的类来说,直接使用构造函数便可得到想要的对像,对于复杂属性的类,可能多设几个构造函数,或构造函数多设几个参数也可能达到想要的结果。但对于复杂的对象有时还真是需要使用专门的构造器来获取适当对象。再说,对于C++开发来说,你搞个构造函数有七八个参数甚至更多,看你领导想不想批你!
对的,构造器模式是按需生成别的类对像的方法,但构造器本身肯定也是类了,要在这类里设置如何生成指定对像呢。

相关知识

1、如果获取某类型对象都考虑使用构造器了,那该类型本身的构造函数是否要私有呢?我想绝大多数情况都会吧。
2、、初始化成员变量并不一定必须能过构造函数传参,也可以用{}初始化。

class Dog
{
   
   
    std::string name, weight, color;
    //...
} 

那么使用 Dog boMei{“bingo”, “15KG”, “withe”};也是可以的。
3、链式设置设计。像上面Dog 类,可能会有 setName(…), setWeight(…),setColor(…)等接口,那么如果每个函数返回自身引用能实现什么效果呢?

class Dog
{
   
   
    std::string name, weight, color;
public:
    Dog& setName(std::string nam){
   
    name = nam; return *this;}
    Dog& setWeight(std::string weigh){
   
    weight = weigh; return *this;}
    Dog& setColor(std::string clr) {
   
    color = clr; return *this;}
    //...
}

那么在连续设置属性时,可Dog dog; dog.setName(“bingo”).setWeight(“15KG”).setColor(“withe”); 。怎么样,方便很多吧?
4、假设有个构造器,class DogBuilder 是用来构造 Dog对象的,那么可以在构造器内部重载 Dog() ,这样就可以直接返回Dog 对象了

class DogBuilder
{
   
   
    Dog dog;
public:
operator Dog() {
   
    return std::move(dog);}
DogBuilder &setName(string nam) {
   
    dog.setName(nam
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值