写点什么

设计模式:建造者设计模式

用户头像
毛佳伟🐳
关注
发布于: 2020 年 05 月 30 日

1.0 简介

建造者模式通过将复杂对象的构造和表示进行分离,使得相同的创建方法可以创建出不同的对象。

我们举例来说,如果我们到一个汉堡店,那么我们可以选择不同的汉堡。组成汉堡的有:面饼,酱料(例如:色拉酱等),副菜(例如:生菜、酸黄瓜等)、主菜(例如:牛肉、鸡肉)。首先,面饼是必须的,其他的配料都是可以根据用户选择的不同配料来进行搭配。



2.0 具体实现



2.1 汉堡

public class Hamburg {
/**
* 汉堡坯
*/
private Billet billet;
/**
* 酱料(例如:色拉酱等)
*/
private Sauce sauce;
/**
* 副菜(例如:生菜、酸黄瓜等)
*/
private Vegetables vegetables;
/**
* 主菜(例如:牛肉、鸡肉)
*/
private Meat meat;
public static Hamburg create(){
Hamburg hamburg = new Hamburg();
Billet billet = new Billet();
hamburg.billet = billet;
return hamburg;
}
public static Hamburg create(Sauce sauce,Meat meat){
Hamburg hamburg = new Hamburg();
Billet billet = new Billet();
hamburg.billet = billet;
return hamburg;
}
}



2.2 汉堡胚

public class Billet {
}



2.3 酱料

// 酱料
public interface Sauce {
}
// 沙拉酱
public class SaladSauce implements Sauce{
}



2.4 蔬菜

// 蔬菜
public interface Vegetables {
}
// 酸黄瓜
public class SourCucumberVegetables implements Vegetables {
}



2.5 肉

// 肉
public interface Meat {
}
// 鸡肉
public class ChickenMeat implements Meat{
}
// 牛肉
public class BeefMeat implements Meat{
}



2.6 主函数

例如:我想要一个加沙拉酱和牛肉的汉堡,如下所示:

public static void main(String[] args) {
Sauce sauce = new SaladSauce();
Meat meat = new BeefMeat();
Hamburg hamburg = Hamburg.create(sauce,meat);
}



3.0 优劣势

3.1 优势

  1. 建造者模式中每个模块相互独立,客户端可以根据需要得到不同的对象。

  2. 客户端不需要知道内部的组成细节,产品本身与产品的创建过程解耦。



3.2 缺点

  1. 建造者模式会产生过多的类,难以维护。



用户头像

毛佳伟🐳

关注

还未添加个人签名 2017.10.17 加入

还未添加个人简介

评论

发布
暂无评论
设计模式:建造者设计模式