何為簡單工廠模式?
由一個工廠類根據傳入的引數,動態建立並返回相應的具體的例項!
三個構成元素:
1、工廠類
2、抽象產品
3、具體產品
優點:
1、提高擴充套件性
2、隱藏具體的實現類,並不需要知道產品具體的建立過程,只需要向工廠類傳入相應引數,就可以獲取相應的產品例項!
程式碼演示:

|
// 抽象產品
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("張三"));
}
}
|