百度经验
页面数据加载中...
建造者模式的出现主要用于创建复杂对象,和工厂模式的区别就在于工厂模式注重于创建对象,建造者模式是将复杂的对象进行分解,达到只需要拓展对类的行为无需关注类的内部细节的目的,并且对类有高度封装 。客户端只需要交给一个负责指挥建造的对象的角色,再由具体指挥者指挥建造者进行复杂的操作。
首先看下UML类图关系,WMBuilder和LMBuilder继承Builder来实现Builder的抽象方法(name,bathroom,bedroom,kitchen)。
再通过Director类来指挥建造者,实现具体复杂的操作
首先我们创建Product类,设置4个私有属性:name,bathroom,bedroom,kitchen,再开放对应Set方法,最后添加Show方法来具体展示。如图:
再创建Builder类,将Product对象供子类使用,开放4个抽象方法name,bathroom,bedroom,kitchen。提供一个获取实例的方法。
通过继承Builder抽象类来重写name,kitchen,bedroom,bathroom方法。每个子类都有自己的具体行为,这里要建立WMBuilder和LMBuilder2个类如下图。
通过Director类来指挥具体建造者,其中 construct方法执行具体复杂的行为,并返回具体建造者对象,如图中结构。
最后客户端通过Builder指向对应子类,再将建造者交于Directory进行指挥实现类的复杂行为,整个过程无需关注内部细节。获取实例后调用展示方法。如图:
通过new出Builder的实例对象(wmbuilder )再将wmbuilder传入 dir的构造参数再通过dir.construct()方法获取Product实例,最后 product调用show()方法输出信息 。