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

时间:2023-02-12 05:02:35

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

大话设计模式-类图

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();
}
}

运行结果如下:

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

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

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

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