大话设计模式-第五夜

昨天晚上我们来的是单例模式,简单明了。我们今天聊聊另一种设计模式,建造者模式,我们的小菜再次出场,非要和大鸟吃路边摊,结果吃的不爽(因为很难吃)大鸟就生搬出了一个设计模式,叫做建造者模式,听着就跟吃饭没啥关系。

建造者模式

建造者模式,题主只是看过,在实际工作中并没有用过建造者模式。该模式是在创建相同类别,但在某些细节上具有一定区别的类时使用,重点来了,这个建造过程是很复杂的,例如女娲造人。。。我擦,别想歪不是啪啪啪,是捏泥人。

建造者模式类图

其实画了类图也记不住,今天不想画。

示例

我们要造人。。。不是,是女娲要捏泥人。女娲捏了男人,又捏了女人。造人过程中发现无论是男人还是女人,都一样一个鼻子两个眼睛一张嘴两条胳膊两条腿。那就可以用一个模版就造出来了。

public class Person{
    public int leg;
    public int head;
    public int arm;
    public void createHead(){
        System.out.println("一个脑袋");
    }
    public void createLeg(){
        System.out.println("两条腿");
    }
    public void createArm(){
        System.out.println("两只胳膊");
    }
}

但女人需要生孩子,男人需要打猎找吃的。因此我们一个Person类就搞不定了,需要Man类和Woman类。

public class Person{
    ...
    public void Other(){}
}
public class Man extends Person{
    @Override
    public void Other(){
        System.out.println("打猎");
    }
}
public class Woman extends Person{
    @Override
    public void Other(){
        System.out.println("生孩子");
    }
}

那么下面女娲大神出场

public class NvWa{
    public Person createPerson(Builder builder){
        builder.createHead();
        builder.createLeg();
        builder.createArm();
        builder.other();
        return builder.burn();
    }
}
public interface Builder{
    public void createHead();
    public void createLeg();
    public void createArm();
    public void other();
    public Person burn();
}
public class ManBuilder extends Builder{
    public Person person = new Man();
    public void createHead(){
        person.createHead();
    }
    public void createLeg(){
        person.createLeg();
    }
    public void createArm(){
        person.createLeg();
    }
    public void createOther(){
        person.createOther();
    }
    public Person burn(){
        return person;
    }
}
public class WomanBuilder extends Builder{
public Person person = new Woman();
    public void createHead(){
        person.createHead();
    }
    public void createLeg(){
        person.createLeg();
    }
    public void createArm(){
        person.createLeg();
    }
    public void createOther(){
        person.createOther();
    }
    public Person burn(){
        return person;
    }
}

最终我们调用这个过程就是

public class Test{
    public static void main(String[] args){
        NvWa nvwa = new NvWa();
        nvwa.createPerson(new ManBuilder());
        nvwa.createPerson(new WomanBuilder());
    }
}

结语

这就是建造者模式,建造者模式不是说建造的东西如何如何,而是在于建造者,也就是我们的女娲,它将建造过程统一起来这样在建造时,就不需要一直记着该建造哪一步了。重点是什么,重点是我们的女娲(^_^怎能如此邪恶)

你可能感兴趣的:(大话设计模式)