美文网首页Java 杂谈javaJava
java设计模式-建造者模式

java设计模式-建造者模式

作者: yiqiquhuxi | 来源:发表于2019-07-03 16:01 被阅读67次

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

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

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

            我们用设计模式的话,怎么才能实现创建不同职业和个性化的功能呢。有的人说可以用工厂模式,工厂模式当然可以实现,工厂模式可以把所有 (职业 + 人物个性化) 的对象都创建一遍,那将是乘积的运算,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

    相关文章

      网友评论

        本文标题:java设计模式-建造者模式

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