Skip to content

Commit 22138d9

Browse files
author
jason_yao
committed
update
1 parent 15a6302 commit 22138d9

330 files changed

Lines changed: 8908 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src"/>
4+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
5+
<classpathentry kind="output" path="bin"/>
6+
</classpath>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>abstractfactory_demo</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
</buildSpec>
14+
<natures>
15+
<nature>org.eclipse.jdt.core.javanature</nature>
16+
</natures>
17+
</projectDescription>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.demo.factory;
2+
3+
import java.lang.management.ManagementFactory;
4+
import java.net.HttpURLConnection;
5+
import java.net.URL;
6+
import java.net.URLConnection;
7+
import java.sql.Connection;
8+
import java.sql.DriverManager;
9+
import java.sql.PreparedStatement;
10+
import java.sql.SQLException;
11+
import java.text.NumberFormat;
12+
import java.util.Arrays;
13+
import java.util.Calendar;
14+
import java.util.ResourceBundle;
15+
16+
import com.demo.factory.custom.Customer;
17+
import com.demo.factory.itf.ChinaKfcFactory;
18+
import com.demo.factory.itf.IKfcFactory;
19+
20+
public class MainApp
21+
{
22+
23+
/**
24+
* 主应用程序方法
25+
*
26+
* @param args
27+
*/
28+
public static void main(String[] args)
29+
{
30+
/**
31+
* 定义一个肯德基(IKfcFactory类型)
32+
*/
33+
IKfcFactory kfcFactory = new ChinaKfcFactory();
34+
/**
35+
* 爸爸和儿子走进肯德基,准备点餐
36+
*/
37+
Customer customer = new Customer(kfcFactory);
38+
/**
39+
* 开始点餐
40+
*/
41+
// 一个麻辣鸡腿汉堡
42+
float hamhurgMoney = customer.orderHamburg(1);
43+
// 四个奥尔良烤鸡翅
44+
float chickenWingsMoney = customer.orderChickenWings(4);
45+
// 一包薯条
46+
float frenchFriesMoney = customer.orderFrenchFries(1);
47+
// 两杯可乐
48+
float beverageMoney = customer.orderBeverage(2);
49+
50+
System.out.println("总计:" + (hamhurgMoney + chickenWingsMoney + frenchFriesMoney + beverageMoney));
51+
52+
}
53+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.demo.factory.custom;
2+
3+
import com.demo.factory.itf.IKfcFactory;
4+
import com.demo.factory.model.Beverage;
5+
import com.demo.factory.model.ChickenWings;
6+
import com.demo.factory.model.FrenchFries;
7+
import com.demo.factory.model.Hamburg;
8+
9+
/**
10+
* 客户类
11+
*
12+
* @author maofw
13+
*
14+
*/
15+
public class Customer
16+
{
17+
// 抽象工厂
18+
private IKfcFactory kfcFactory;
19+
20+
// 构造方法将抽象工厂作为参数传入
21+
public Customer(IKfcFactory kfcFactory)
22+
{
23+
this.kfcFactory = kfcFactory;
24+
}
25+
26+
/**
27+
* 订购食物
28+
*/
29+
// 订购麻辣鸡腿汉堡
30+
public float orderHamburg(int num)
31+
{
32+
// 获得麻辣鸡腿汉堡
33+
Hamburg hamburg = kfcFactory.createHamburg(num);
34+
// 输出订购信息
35+
hamburg.printMesage();
36+
// 返回总价
37+
return hamburg.totalPrice();
38+
}
39+
40+
// 订购奥尔良烤鸡翅
41+
public float orderChickenWings(int num)
42+
{
43+
// 获得奥尔良烤鸡翅
44+
ChickenWings chickenWings = kfcFactory.createChickenWings(num);
45+
// 输出订购信息
46+
chickenWings.printMesage();
47+
// 返回总价
48+
return chickenWings.totalPrice();
49+
}
50+
51+
// 订购薯条
52+
public float orderFrenchFries(int num)
53+
{
54+
// 获得薯条
55+
FrenchFries frenchFries = kfcFactory.createFrenchFries(num);
56+
// 输出订购信息
57+
frenchFries.printMesage();
58+
// 返回总价
59+
return frenchFries.totalPrice();
60+
}
61+
62+
// 订购可乐
63+
public float orderBeverage(int num)
64+
{
65+
// 获得可乐
66+
Beverage beverage = kfcFactory.createBeverage(num);
67+
// 输出订购信息
68+
beverage.printMesage();
69+
// 返回总价
70+
return beverage.totalPrice();
71+
}
72+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.demo.factory.itf;
2+
3+
import com.demo.factory.model.Beverage;
4+
import com.demo.factory.model.ChickenWings;
5+
import com.demo.factory.model.FrenchFries;
6+
import com.demo.factory.model.Hamburg;
7+
import com.demo.factory.model.kfc.ChinaBeverage;
8+
import com.demo.factory.model.kfc.ChinaChickenWings;
9+
import com.demo.factory.model.kfc.ChinaFrenchFries;
10+
import com.demo.factory.model.kfc.ChinaHanburm;
11+
12+
public class ChinaKfcFactory implements IKfcFactory
13+
{
14+
15+
// 生产可乐
16+
public Beverage createBeverage(int num)
17+
{
18+
return new ChinaBeverage(num);
19+
}
20+
21+
// 生产奥尔良烤鸡翅
22+
public ChickenWings createChickenWings(int num)
23+
{
24+
return new ChinaChickenWings(num);
25+
}
26+
27+
// 生产薯条
28+
public FrenchFries createFrenchFries(int num)
29+
{
30+
return new ChinaFrenchFries(num);
31+
}
32+
33+
// 生产麻辣风味鸡腿汉堡
34+
public Hamburg createHamburg(int num)
35+
{
36+
return new ChinaHanburm(num);
37+
}
38+
39+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.demo.factory.itf;
2+
3+
import com.demo.factory.model.Beverage;
4+
import com.demo.factory.model.ChickenWings;
5+
import com.demo.factory.model.FrenchFries;
6+
import com.demo.factory.model.Hamburg;
7+
8+
/**
9+
* 肯德基抽象工厂基类
10+
*
11+
* @author maofw
12+
*
13+
*/
14+
public interface IKfcFactory
15+
{
16+
// 生产汉堡
17+
public Hamburg createHamburg(int num);
18+
19+
// 生产薯条
20+
public FrenchFries createFrenchFries(int num);
21+
22+
// 生产鸡翅
23+
public ChickenWings createChickenWings(int num);
24+
25+
// 生产饮料
26+
public Beverage createBeverage(int num);
27+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.demo.factory.model;
2+
3+
/**
4+
*
5+
* 食物基类
6+
*
7+
* @author maofw
8+
*
9+
*/
10+
public abstract class AbstractBaseFood
11+
{
12+
// 类别
13+
protected String kind;
14+
// 数量
15+
protected int num;
16+
// 价格
17+
protected float price;
18+
19+
// 合计
20+
public float totalPrice()
21+
{
22+
return this.num * this.price;
23+
}
24+
25+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.demo.factory.model;
2+
3+
/**
4+
* 饮料基类
5+
*
6+
* @author maofw
7+
*
8+
*/
9+
public abstract class Beverage extends AbstractBaseFood implements IFood
10+
{
11+
12+
public void printMesage()
13+
{
14+
System.out.println("--" + this.kind + "饮料,\t单价:" + this.price + ",\t数量:" + this.num + ",\t合计:" + this.totalPrice());
15+
}
16+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.demo.factory.model;
2+
3+
/**
4+
* 鸡翅基类
5+
*
6+
* @author maofw
7+
*
8+
*/
9+
public abstract class ChickenWings extends AbstractBaseFood implements IFood
10+
{
11+
12+
public void printMesage()
13+
{
14+
System.out.println("--" + this.kind + "风味鸡翅,\t单价:" + this.price + ",\t数量:" + this.num + ",\t合计:" + this.totalPrice());
15+
}
16+
17+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.demo.factory.model;
2+
3+
/**
4+
* 薯条基类
5+
*
6+
* @author maofw
7+
*
8+
*/
9+
public abstract class FrenchFries extends AbstractBaseFood implements IFood
10+
{
11+
public void printMesage()
12+
{
13+
System.out.println("--" + this.kind + "风味薯条,\t单价:" + this.price + ",\t数量:" + this.num + ",\t合计:" + this.totalPrice());
14+
}
15+
}

0 commit comments

Comments
 (0)