java中的設計模式(一)--簡單工廠模式

最近開始學習java中的設計模式。相信這是每一個編碼人員必須要掌握的。至於推薦的資料,相信大家在百度上一搜就ok。閒話少說。now,begin

簡單工廠模式--簡單來說是指生產者根據不同不同的要求生產不同的產品。

舉例:果園裏有很多水果,比如:蘋果,香蕉。

           他們具有共同的行爲:可以吃,可以種植,可以銷售。

           此外,還有一個管理人員果農,他管理這果園。

結構圖如下:

 

1.抽象方法:

public interface Fruit {
	public void eat();
	public void plant();
	public void sell();
}


2.具體的產品類:

package com.sf.entity;

import com.sf.jk.Fruit;

public class Apple implements Fruit {

	public Apple(){
		System.out.println("生產水果");
	}
	public void eat() {
		System.out.println("蘋果可以吃");
	}

	public void plant() {
		// TODO Auto-generated method stub
		System.out.println("蘋果可以種");
	}

	public void sell() {
		// TODO Auto-generated method stub
		System.out.println("蘋果可以賣");
	}

}


 

package com.sf.entity;

import com.sf.jk.Fruit;

public class Banana implements Fruit{

	public Banana(){
		System.out.println("生產香蕉");
	}
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("香蕉可以吃");
	}

	public void plant() {
		// TODO Auto-generated method stub
		System.out.println("香蕉可以種");
	}

	public void sell() {
		// TODO Auto-generated method stub
		System.out.println("香蕉可以賣");
	}
	
}

3.定義一個管理員

package com.sf.hf;

import com.sf.entity.Apple;
import com.sf.entity.Banana;
import com.sf.jk.Fruit;

public class FruitFactory {
	public static Fruit createFruit(String fruit){
		if(fruit.equals("apple")){
			return new Apple();
		}else if (fruit.equals("banana")) {
			return new Banana();
		}else {
			return null;
		}
	}
}


 

4.在生產具體水果的時候,客戶端只需要調用FruitFactory 中的靜態方法就可

import com.sf.entity.Apple;
import com.sf.entity.Banana;
import com.sf.hf.FruitFactory;
import com.sf.jk.Fruit;


public class Test {

	public static void main(String[] args) {
		System.out.println("---------創建蘋果---------");
		Fruit apple = FruitFactory.createFruit("apple");
		apple.eat();
		apple.plant();
		System.out.println("---------創建香蕉---------");
		Fruit banana = FruitFactory.createFruit("banana");
		banana.eat();
		banana.plant();
	}
}


5.運行結果如下:

---------創建蘋果---------
生產水果
蘋果可以吃
蘋果可以種
---------創建香蕉---------
生產香蕉
香蕉可以吃
香蕉可以種

 

 

簡單工廠模式的優缺點:

優點:模式的核心是工廠類。這個類含有必要的判斷邏輯,可以決定創建哪一個產品類的實例。而客戶端免去了直接創建產品對象的責任,而僅僅負責“消費”產品。簡

單工廠模式通過這種做法實現了對責任的分割。

缺點:當產品類有複雜的多層次等級結構時,工廠類只有他自己。由於工廠類集中了所有產品創建邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果使用常

規的判斷方法,在工廠里根據傳入的參數的不同而實例化產品對象的話,代碼是不可用的,因爲如果增加新產品必須修改工廠角色的源碼,不利於以後的維護。

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