何為簡單工廠模式?

由一個工廠類根據傳入的引數,動態建立並返回相應的具體的例項!

三個構成元素:

1、工廠類

2、抽象產品

3、具體產品

優點:

1、提高擴充套件性

2、隱藏具體的實現類,並不需要知道產品具體的建立過程,只需要向工廠類傳入相應引數,就可以獲取相應的產品例項!

程式碼演示:

 1
2
3
4
5
6
7
8
9
10
// 抽象產品
package com.test.simplefactory; public interface Person { public String sayHello(String name); public String sayGoodbye(String name); }
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.test.simplefactory;
// 具體產品1
public class Chinese implements Person { @Override
public String sayHello(String name) {
return "你好," + name;
} @Override
public String sayGoodbye(String name) {
return "再見," + name;
} }
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.test.simplefactory;
// 具體產品2
public class American implements Person { @Override
public String sayHello(String name) {
return "hello," + name;
} @Override
public String sayGoodbye(String name) {
return "goodbye," + name;
} }
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.test.simplefactory;
// 工廠類
public class PersonFactory { // 根據引數的不同返回不同的例項
public Person getPerson(String name){ Person person = null; if("chinese".equals(name)){ person = new Chinese(); }else if("american".equals(name)){ person = new American(); } return person; } }
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.test.simplefactory;
// 測試
public class Client { public static void main(String[] args) { /*Person chinese = new Chinese(); System.out.println(chinese.sayHello("張三"));
System.out.println(chinese.sayGoodbye("張三")); Person american = new American(); System.out.println(american.sayHello("Tom"));
System.out.println(american.sayGoodbye("Tom"));*/ PersonFactory factory = new PersonFactory();
Person chinese = factory.getPerson("chinese"); System.out.println(chinese.sayHello("張三")); } }