工廠設計模式
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();
}
}
運行結果