Java 杂谈javaJava

java设计模式-建造者模式

2019-07-03  本文已影响67人  yiqiquhuxi

建造者模式,属于创建型模式

        首先,我们在这里举个例子,大家应该都玩过网络游戏,进入游戏时候,我们要选择自己喜欢的角色,职业,性别,精细一点的游戏我们要选择各种个性化,如鼻子大小,身高,肤色,眼睛颜色等等。

游戏角色个性化设置 游戏角色个性化设置

        我们用设计模式的话,怎么才能实现创建不同职业和个性化的功能呢。有的人说可以用工厂模式,工厂模式当然可以实现,工厂模式可以把所有 (职业 + 人物个性化) 的对象都创建一遍,那将是乘积的运算,10个职业*10个眼睛颜色*10个头发颜色等等, 那将要提前创建个多少对象,不敢想象, 代码几乎没有得到复用 。


        在这里我们完全可以用建造者模式来简单的解决这个问题。如果说工厂模式创建的是对象,那么建造者模是创建细节对象。话不多说直接上代码:

游戏人物:

游戏人物模型

建造者:

创建人物的接口类

具体人物(法师和战士):

创建一个法师 创建一个战士

指挥官:

相当于创建角色的确定按钮

测试类:

结果测试

到这里,我们就用了2个类(ZhanshiBuilder,FashiBuilder),就能创建所有的个性化战士和法师,相对于工厂模式,我们代码更加的简洁,增加了代码的复用,减少了代码的耦合,问题得到了很好的解决。


总结:建造者模式是创建型模式中比较常见的一种,如果说工厂模式关注的是整体对象的创建,而建造者模式是更加关注对象细节的创建。在jdk源码中这些类使用了建造者模式:

java.lang.StringBuilder#append() (非线程安全)
java.lang.StringBuffer#append() (线程安全)
java.nio.ByteBuffer#put()(还CharBuffer,ShortBuffer,IntBuffer,LongBuffer
FloatBuffer和DoubleBuffer)
javax.swing.GroupLayout.Group#addComponent()
所有的实现 java.lang.Appendable

上一篇 下一篇

猜你喜欢

热点阅读