工廠設計模式之簡單工廠、工廠方法

工廠設計模式

1、工廠設計模式的作用:將創建者和調用者進行分離(我們經常是創建對象之後再調用)
2、簡單工廠模式,一個工廠生產很多對象(最常用)。
3、工廠方法:在簡單工廠的基礎之上更加細分,分爲幾個工廠

簡單工廠模式(生產筆記本電腦)

1、定義電腦接口,依賴倒置原則,即面向接口編程

public interface Computer {
	/**
	 * 不同電腦打開瀏覽器
	 */
	public void browser();
}

2、定義HP和ASUS兩個品牌的筆記本電腦

public class ASUSComputer implements Computer {

	@Override
	public void browser() {
		System.out.println("使用華碩筆記本打開瀏覽器");
	}
}
public class HPConputer implements Computer {

	@Override
	public void browser() {
		System.out.println("使用HP筆記本打開瀏覽器");
	}
}

3、定義一個簡單工廠,來"生產"這些對象

/**
 * 生產電腦
 * @author 紫炎易霄
 */
public class ComputerFactory {
	/**
	 * 獲得筆記本對象
	 */
	public static Computer getComputer(String name){
		//定義一個句柄
		Computer computer = null;
		if("HP".equalsIgnoreCase(name)){
			computer = new HPConputer();
		}else if("ASUS".equalsIgnoreCase(name)){
			computer = new ASUSComputer();
		}
		return computer;
	}	
}

4、定義測試類

public class FactoryTest {
	public static void main(String[] args) {
		Computer asus = ComputerFactory.getComputer("asus");
		Computer hp = ComputerFactory.getComputer("hp");
		asus.browser();
		hp.browser();
	}
}

運行結果
在這裏插入圖片描述

工廠方法模式(生產筆記本電腦)

1、接口

public interface Computer {
	/**
	 * 不同電腦打開瀏覽器
	 */
	public void browser();
}

2、實現類

public class HPConputer implements Computer {

	@Override
	public void browser() {
		System.out.println("使用HP筆記本打開瀏覽器");
	}
}
public class ASUSComputer implements Computer {
	@Override
	public void browser() {
		System.out.println("使用華碩筆記本打開瀏覽器");
	}
}

3、兩個電腦品牌的工廠

/**
 * 華碩電腦生產工廠
 * @author 紫炎易霄
 */
public class ASUSFactory {
	/**
	 * 生產電腦的方法
	 */
	public static ASUSComputer getASUSComputer(){
		return new ASUSComputer();
	}
}
/**
 * 惠普電腦工廠
 * @author 紫炎易霄
 */
public class HPFactory {
	/**
	 * 獲得惠普電腦的方法
	 */
	public static HPConputer getHPConputer(){
		return new HPConputer();
	}
}

4、測試方法

public class FactoryTest {
	public static void main(String[] args) {
		HPConputer hpConputer = HPFactory.getHPConputer();
		hpConputer.browser();
		ASUSComputer asusComputer = ASUSFactory.getASUSComputer();
		asusComputer.browser();
	}
}

運行結果
在這裏插入圖片描述

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