package com.xjh.demo.designpattern.pattern1;
public abstract class Animal {
public abstract void eat();
}
package com.xjh.demo.designpattern.pattern1;
public class Dog extends Animal{
public void eat() {
System.out.println("dog eat meat!!");
}
}
package com.xjh.demo.designpattern.pattern1;
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("cat eat fish!! ");
}
}
package com.xjh.demo.designpattern.pattern1;
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;
}
}
}
package com.xjh.demo.designpattern.pattern1;
public class AnimalTest {
public static void main(String[] args) {
Animal animal = AnimalFactory.createAnimal("dog");
animal.eat();
animal = AnimalFactory.createAnimal("cat");
animal.eat();
}
}
模式定義
簡單工廠模式(Simple Factory Pattern):又稱爲靜態工廠方法(Static Factory Method)模式,它屬於類創建型模式。在簡單工廠模式中,可以根據參數的不同返回不同類的實例。簡單工廠模式專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。
模式結構
簡單工廠模式包含如下角色:
Factory:工廠角色
Product:抽象產品角色
ConcreteProduct:具體產品角色
簡單工廠模式的要點在於:當你需要什麼,只需要傳入一個正確的參數,就可以獲取你所需要的對象,而無須知道其創建細節。
簡單工廠模式最大的優點在於實現對象的創建和對象的使用分離,將對象的創建交給專門的工廠類負責,但是其最大的缺點在於工廠類不夠靈活,增加新的具體產品需要修改工廠類的判斷邏輯代碼,而且產品較多時,工廠方法代碼將會非常複雜。