建造者模式的本质:
-分离了对象子组件的的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。
-由于事先了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法,装配算法的解耦。实现了更好的复用
代码说明:
package myGirlFriend;
public class GirlFriend {
private String name;
private int age;
private String Bust;
private String leg;
public GirlFriend(String name, int age, String bust, String leg) {
super();
this.name = name;
this.age = age;
Bust = bust;
this.leg = leg;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBust() {
return Bust;
}
public void setBust(String bust) {
Bust = bust;
}
public String getLeg() {
return leg;
}
public void setLeg(String leg) {
this.leg = leg;
}
public GirlFriend() {
super();
}
}
package myGirlFriend;
public interface GirFriendInterface {
String name();
int age();
String Bust();
String leg();
}
package myGirlFriend;
public interface Director {
GirlFriend directGirFriend();
}
package myGirlFriend;
public class GirFriendDirector implements Director{
private GirFriendBulider girl;
public GirFriendDirector(GirFriendBulider girl) {
super();
this.girl = girl;
}
@Override
public GirlFriend directGirFriend() {
GirlFriend gf = new GirlFriend("杨幂", 18, "36D", "修长的美腿");
return gf;
}
}
package myGirlFriend;
public class GirFriendBulider implements GirFriendInterface {
@Override
public String name() {
// TODO Auto-generated method stub
return name();
}
@Override
public int age() {
// TODO Auto-generated method stub
return age();
}
@Override
public String Bust() {
// TODO Auto-generated method stub
return Bust();
}
@Override
public String leg() {
// TODO Auto-generated method stub
return leg();
}
}
package myGirlFriend;
import java.util.Scanner;
public class myGirlFriend {
public static void main(String[] args) throws InterruptedException {
GirFriendDirector gd= new GirFriendDirector(new GirFriendBulider());
GirlFriend gf =gd.directGirFriend();
System.out.println("您的女朋友名字:"+gf.getName());
Thread.sleep(1000);
System.out.println("年龄:"+gf.getAge());
Thread.sleep(1000);
System.out.println("胸围:"+gf.getBust());
Thread.sleep(1000);
System.out.println("拥有一条"+gf.getLeg());
Scanner sc =new Scanner(System.in);
Thread.sleep(1000);
System.out.println("请问您对这个女朋友满意不?");
String nn =sc.nextLine();
if(nn.equals("不满意")) {
System.out.println("一个屌丝");
}else if(nn.equals("满意")){
System.out.println(gf.getName()+"今晚就陪你睡觉");
}else {
System.out.println("对不起,识别不成功,只能输入不满意或满意");
}
}
}