設計模式之一:簡單工廠模式

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:具體產品角色

簡單工廠模式的要點在於:當你需要什麼,只需要傳入一個正確的參數,就可以獲取你所需要的對象,而無須知道其創建細節。
簡單工廠模式最大的優點在於實現對象的創建和對象的使用分離,將對象的創建交給專門的工廠類負責,但是其最大的缺點在於工廠類不夠靈活,增加新的具體產品需要修改工廠類的判斷邏輯代碼,而且產品較多時,工廠方法代碼將會非常複雜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章