1.建造者模式概念:将一个复杂对象的构建与它的表示分离,使得相同的构建过程可以创建不同的表示。
2.代码:


/**
* 手机建造者:
* 提供后壳、主板、屏幕
* @author: gnehcgnaw
* @date: 2018/11/15 15:24
*/
public interface PhoneBuilder {
public Screen builderScreen();
public Motherboard builderMotherboard();
public BackCover builderBackCover();
}
2)Phone.java(Product的抽象对象)
/**
* 手机
* @author: gnehcgnaw
* @date: 2018/11/15 15:20
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Phone {
private Screen screen ;
private Motherboard motherboard ;
private BackCover backCover ;
}
3)PhoneBuilder.java(手机构建者接口)
/**
* 手机建造者:
* 提供后壳、主板、屏幕
* @author: gnehcgnaw
* @date: 2018/11/15 15:24
*/
public interface PhoneBuilder {
public Screen builderScreen();
public Motherboard builderMotherboard();
public BackCover builderBackCover();
}
interface Screen{
}
interface Motherboard{
}
interface BackCover{
}
4)HuaWeiPhoneBuilder.java(手机构建者的具体实现)
/**
* @author: gnehcgnaw
* @date: 2018/11/20 22:50
*/
public class HuaWeiPhoneBuilder implements PhoneBuilder {
@Override
public Screen builderScreen() {
return new HuaWeiScreen();
}
@Override
public Motherboard builderMotherboard() {
return new HuaWeiMotherboard();
}
@Override
public BackCover builderBackCover() {
return new HuaWeiBackCover();
}
}
class HuaWeiScreen implements Screen{
}
class HuaWeiMotherboard implements Motherboard{
}
class HuaWeiBackCover implements BackCover{
}
5)PhoneDirector.java(构建指挥者)
/**
*
* 指挥者
* @author: gnehcgnaw
* @date: 2018/11/15 15:25
*/
public interface PhoneDirector {
public Phone directorPhone(PhoneBuilder phoneBuilder);
}
6)HuaWeiPhoneDirector.java(构建的具体实现)
/**
* 指挥者
* @author: gnehcgnaw
* @date: 2018/11/15 15:36
*/
public class HuaWeiPhoneDirector implements PhoneDirector {
@Override
public Phone directorPhone(PhoneBuilder phoneBuilder) {
Screen screen = phoneBuilder.builderScreen();
Motherboard motherboard = phoneBuilder.builderMotherboard();
BackCover backCover = phoneBuilder.builderBackCover();
return new Phone(screen,motherboard,backCover);
}
}
7)Main.java调用者
/**
* @author: gnehcgnaw
* @date: 2018/11/15 15:46
*/
public class Main {
public static void main(String[] args) {
PhoneDirector phoneDirector = new HuaWeiPhoneDirector();
Phone phone = phoneDirector.directorPhone(new HuaWeiPhoneBuilder());
System.out.println(phone);
}
}
3.开发中应用场景:
1)StringBuilder类的append方法
2)SQL中的PreparedStatement
3)JDOM中,DomBuilder、SAXBuilder
文章转载自程序猿wangc,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




