java学习-设计模式-builder模式
一 简介
使得一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。
二 代码实例-制作汉堡包
-
需求
按照约定好的流程制作不同的汉堡包
-
代码实现
汉堡制作接口类: 包含一些制作汉堡的流程的接口
public abstract class HamburgerCreation {
public abstract void addMeat();
public abstract void addLettuce();
public abstract void addBurdening();
}
汉堡制作指挥者类(Director):建造模式的重点,负责将不同的制作步骤集合与一处
public class MakeHamburgerDirector {
private HamburgerCreation hamburgerCreation;
public MakeHamburgerDirector(HamburgerCreation hamburgerCreation) {
this.hamburgerCreation = hamburgerCreation;
}
public void makeHamburger() {
hamburgerCreation.addBurdening();
hamburgerCreation.addLettuce();
hamburgerCreation.addMeat();
}
}
汉堡具体实现类:
public class BeefHamburgerMake extends HamburgerCreation {
@Override
public void addMeat() {
System.out.println("加牛肉");
}
@Override
public void addLettuce() {
System.out.println("加生菜");
}
@Override
public void addBurdening() {
System.out.println("加各种配料");
}
}
public class ChickenHamburgerMake extends HamburgerCreation {
@Override
public void addMeat() {
System.out.println("加鸡肉");
}
@Override
public void addLettuce() {
System.out.println("加生菜");
}
@Override
public void addBurdening() {
System.out.println("加各种配料");
}
}
测试类:
public class Test {
public static void main(String[] args) {
//做牛肉堡
BeefHamburgerMake beefHamburger = new BeefHamburgerMake();
MakeHamburgerDirector director = new MakeHamburgerDirector(beefHamburger);
director.makeHamburger();
//做鸡腿堡
ChickenHamburgerMake chickenHamburger = new ChickenHamburgerMake();
MakeHamburgerDirector director1 = new MakeHamburgerDirector(chickenHamburger);
director1.makeHamburger();
}
}
这种模式下,使得外界并不知道具体的流程如何,只关注于制作什么。