java 之 建造者模式(大话设计模式)

建造者模式,在笔者看来比较试用于,定制一个业务流程,而流程的细节又不尽相同,每个细节又必不可少,这时应考虑使用建造者模式。

大话设计模式-类图

先看下笔者写的一个简单的例子。

/**
 *  所有建造过程不同的方法均定义在接口里
 */
public interface IMakePerson {

    public void makeHead();

    public void makeBody();

    public void makeHandle();

    public void makeLeg();

    public Person getResult();
}
/**
 * 产品
 */
public class Person {

    List<String> personParts = new ArrayList<>();

    public void add(String part) {

        personParts.add(part);
    }

    public void show() {

        for (String part : personParts) {
            System.out.print(part);
        }
    }
}
/**
 *  指挥官,指挥具体创建小人的过程
 */
public class Director {

    public Person createPerson(IMakePerson makePerson) {
        makePerson.makeHead();
        makePerson.makeBody();
        makePerson.makeHandle();
        makePerson.makeLeg();
        return makePerson.getResult();
    }
}
/**
 *  实现创建小人接口的具体创建小人类
 */
public class FatPerson implements IMakePerson{

    private Person person = new Person();

    @Override
    public void makeHead() {
        person.add("头    ");
    }

    @Override
    public void makeBody() {
        person.add("胖身体    ");
    }

    @Override
    public void makeHandle() {
        person.add("手    ");
    }

    @Override
    public void makeLeg() {
        person.add("腿    ");
    }

    @Override
    public Person getResult() {
        return person;
    }
}
/**
 *  实现创建小人接口的具体创建小人类
 */
public class ThinPerson implements IMakePerson{

    private Person person = new Person();

    @Override
    public void makeHead() {
        person.add("头    ");
    }

    @Override
    public void makeBody() {
        person.add("瘦身体    ");
    }

    @Override
    public void makeHandle() {
        person.add("手    ");
    }

    @Override
    public void makeLeg() {
        person.add("腿    ");
    }

    @Override
    public Person getResult() {
        return person;
    }
}
/**
 * 客户端
 */
public class Test {

    public static void main(String[] args) {
        IMakePerson thinPerson = new ThinPerson();
        Director director = new Director();
        Person thinperson = director.createPerson(thinPerson);
        thinperson.show();

        System.out.println("\n---------------------------------------------");

        IMakePerson FatPerson = new FatPerson();
        Person fatperson = director.createPerson(FatPerson);
        fatperson.show();
    }
}

 

运行结果如下:

头    瘦身体    手    腿    
---------------------------------------------
头    胖身体    手    腿    

 

可以看出如果我们继续创建不同的小人,我们只需要在写一个小人类实现接口就可以了,这样我们可以稳定的创建小人,而不会造出残疾人。

实际工作中,很多流程都不尽相同,只是细节有区别,此时我们应采用建造者模式,来为不同的客户创建不同的稳定流程。

以上是笔者对建造者的理解,希望能帮助学习的小伙伴!

posted @ 2017-12-04 15:07  红尾巴的猪  阅读(369)  评论(0编辑  收藏  举报