设计模式 - 工厂模式(Factory Pattern)

设计模式 - 工厂模式(Factory Pattern)

  Java设计模式 - 工厂模式


简单工厂模式

简单工厂模式组成:

  • 工厂类:简单工厂模式的核心,负责创建所需的产品实例。
  • 抽象产品类:产品类的父类,定义产品类共有的属性和方法。
  • 产品类: 继承抽象产品类,即具体的产品。

  首先定义抽象咖啡类,规定所有咖啡共有的接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public abstract class Coffee {

protected String name;

// 制作咖啡
public void prepare() {
System.out.println(name + "制作完成!");
}

// 打包咖啡
public void pack() {
System.out.println(name + "打包完成!");
}

}

  定义具体类型的咖啡。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Americano extends Coffee{
public Americano() {
this.name = "美式";
}
}

public class Latte extends Coffee{
public Latte() {
this.name = "拿铁";
}
}

public class Mocha extends Coffee{
public Mocha() {
this.name = "摩卡";
}
}

  创建咖啡工厂类,负责具体产品的实例化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class CoffeeFactory {

public Coffee createCoffee(String coffeeType) {
Coffee coffee = null;
if (coffeeType.equals("美式")) {
coffee = new Americano();
} else if (coffeeType.equals("拿铁")) {
coffee = new Latte();
} else if (coffeeType.equals("摩卡")) {
coffee = new Mocha();
}
return coffee;
}
}

  咖啡馆类调用咖啡工厂类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Cafe {
private static String getCoffeeType() {
try {
BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入咖啡类别:");
String str = strin.readLine();
return str;
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
public static void main(String[] args) {
CoffeeFactory cf = new CoffeeFactory();
String coffeeType = getCoffeeType();
Coffee coffee = cf.createCoffee(coffeeType);
if (coffee != null) {
coffee.prepare();
coffee.pack();
} else {
System.out.println("请求失败!");
}
}
}

unsplash-logoTyler Nix


#
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×