Java設計模式-簡單工廠模式概述與使用
1、設計模式概述
- 什麼是設計模式
- 設計模式分類
- 創建型模式
- 行爲型模式
- 結構型模式
- 常見的設計模式
- 簡單工廠模式和工廠方法模式(接口)
- 模版設計模式(抽象類)
- 裝飾設計模式(IO流)
- 單例設計模式(多線程)
- 適配器模式(GUI)
2、簡單工廠模式:只有一個工廠用來生產對象
- 簡單工廠模式概述:又叫靜態工廠方法模式,它定義一個具體的工廠類負責創建一些類的實例。
- 優點:客戶端不需要再負責對象的創建,從而明確了各個類的職責。
- 缺點:這個靜態工廠類負責所有對象的創建,如果有新的對象增加,或者某些對象的創建方式不同,就需要不斷的修改工廠類,不利於後期的維護。
(1)動物類——抽象類
package cn.itcast_01;
public abstract class Animal {
public abstract void eat();
}
(2)Dog類繼承動物接口——實現父類的抽象方法
package cn.itcast_01;
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗喫肉");
}
}
(3)Cat類繼承動物接口——實現父類的抽象方法
package cn.itcast_01;
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("貓喫魚");
}
}
(4)動物工廠類——返回的是動物對象
package cn.itcast_01;
public class AnimalFactory {
private AnimalFactory() {
}
public static Animal createAnimal(String type) {
if ("dog".equals(type)) {
return new Dog();
} else if ("cat".equals(type)) {
return new Cat();
} else {
return null;
}
}
}
(5)測試類
package cn.itcast_01;
public class AnimalDemo {
public static void main(String[] args) {
// 具體類調用
Dog d = new Dog();
d.eat();
Cat c = new Cat();
c.eat();
System.out.println("------------");
// 工廠有了後,通過工廠給造
Animal a = AnimalFactory.createAnimal("dog");
a.eat();
a = AnimalFactory.createAnimal("cat");
a.eat();
// NullPointerException
a = AnimalFactory.createAnimal("pig");
if (a != null) {
a.eat();
} else {
System.out.println("對不起,暫時不提供這種動物");
}
}
}
注:該系列博客內容參考自傳智播客劉意老師視頻。