每日设计模式——建造者模式

      建造者模式就是要讲一个复杂对象的构建与它的表示分离,使的同样的构建过程可以创建不同的表示。主要用于创建一些复杂的对象,这些对象内部构建见得建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。语出自《大话设计模式》

      在大话设计模式里举得例子是构建小人,用户不需要知道建造的具体过程,因为建造者隐藏了小人的组装方式,即头、身子、手脚等部件,用户只要指定构造怎样的小人就可以了。建造的代码与表示的代码是分离的。

      在古剑中,建造者模式可以用来构建不同种类的NPC,NPC的差距主要在于人物模型与皮肤贴图,具体的人物动作假定在人物模型中实现。不同的人物模型也许差别很大,但是人物模型的构建顺序应该是稳定的,对外不会关注一个人物模型是如何构造的,只要一个符合场景,满足需要的NPC即可,所以用建造者模型比较恰当。

      具体实现如下(各种输出只是测试代码,请自动无视):

product1.h文件

 

 

product2.h 文件

 

 

builder.h 文件

 

 

concreteBuilder1.h 文件

 

 

concreteBuilder1.cpp 文件

 

 

concreteBuilder2.h 文件

 

 

concreteBuilder2.cpp 文件

 

 

director.h 文件

 

 

director.cpp 文件

 

 

main.cpp 文件

 

 

运行结果

 

      说明,Builder是建造产品的抽象类,也可以说是接口,关键看怎么定义。ConcreteBuilder是具体的建造者,实现构造的过程。Product是具体的产品。Director是指挥者,用来构建一个使用Builder的对象。其实我还是觉得这玩意形容起来真艰难,看着代码就明白了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值