设计模式-04-建造者模式

97 阅读2分钟

建造者模式也属于创建型模式,它提供了一种创建对象的最佳方式。

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。

用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)

例子: 工厂(建造者模式)︰负责制造汽车(组装过>程和细节在工厂内) 汽车购买者(用户)︰你只需要说出你需要的>型号(对象的类型和内容),然后直接购买就可以使用了(不需要知道汽车是怎么组装的(车轮、车门、>发动机、方向盘等等))

主要包含:

1. 一个指挥,安排执行顺序;
2. 一个生产,定义生产需要的条件(定义的抽象类,抽象建造者)
3. 一个实际生产者,实际生产需要的条件(实现抽象类,具体建造者)
4. 一个建造目标,类似于要产生的类的信息



就那我最喜欢的炮王泽拉斯来说吧 lol设计师 设计了这个英雄,他有四个技能,qwer,开炮 bangbangbang!!

目标对象;

image.png

产生目标对象的抽象方法: 开始肯定是构思四个技能具体什么技能呢, image.png

具体的建造者 设计师思考了三个月 头发变得比程序员还少,在看完亮剑以后终于知道中国人喜欢玩这个,知道要怎么弄了,就在游戏里实现了具体的技能;

image.png

指挥者:核心,可以定制构造顺序; 这个就好比是我们玩家,来决定四个技能的释放顺序;是先qwer还是rrrr,虽然炮好玩,还是不要见面就上炮!

image.png

优点:

  • 产品的建造和表示分离,实现了解耦。使用建造者模式可以使客户端不必知道产品内部组成的细节。将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰
    
  • 具体的建造者类之间是相互独立的,这有利于系统的扩展。增加新的具体建造者无需修改原有类库的代码,符合“开闭原则“。
    

缺点:

  • 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。
    
  • 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化
    
  • 导致系统变得很庞大。