1. 程式人生 > >Java的設計思想之工廠的實現

Java的設計思想之工廠的實現

場景與問題
 Java程式開發講究面向介面程式設計,需要隱藏具體的實現類,如何解決其問題。

這個時候我們就需要用“介面  工廠   實現類”----鐵三角。來幫助我們解決問題

第一個類是我們的客戶端。。。。我們通過介面隱藏我們背後的實現類,當我們更改實現類中的函式,客戶端的輸出也會有相應的變化,但是客戶端的資料不需要發生變動

package cn.hncu.pattern.factory.client;

import cn.hncu.pattern.factory.dept.Api;
import cn.hncu.pattern.factory.dept.DeptFactory;

//介面  工廠   實現類----鐵三角

public class Client {
	public static void main(String[] args) {
		Api api = DeptFactory.getDeptApi(); //名稱規範:getInstance,getXXX--介面名稱
		String str = api.t1();
		System.out.println(str);
	}

}
這是一個Api接口裡面寫了一個抽象函式
package cn.hncu.pattern.factory.dept;

public interface Api {
	public String t1();
}
這個類是工廠類,通過工廠類我們可以給客戶端返回他們需要的值,我們只需要改變實現類的變換
package cn.hncu.pattern.factory.dept;

import cn.hncu.pattern.factory.dept.Impl.DeptImpl1;
import cn.hncu.pattern.factory.dept.Impl.DeptImpl2;

public class DeptFactory {//類的名稱規範:XXXFactory
	private DeptFactory(){
	}
	public static Api getDeptApi(){//工廠方法的功能:造介面---其實內部new的還是例項,只是返回的是介面型別
		//return new DeptImpl1();//選擇"DeptImpl1"。
		return new DeptImpl2();//選擇"DeptImpl2"。  工廠的本質功能是選擇實現
	}
	
}
第一個實現類的編寫
package cn.hncu.pattern.factory.dept.Impl;

import cn.hncu.pattern.factory.dept.Api;

public class DeptImpl1 implements Api{

	@Override
	public String t1() {
		
		return "11111111111111";
	}
	
}

第二個實現類的編寫
package cn.hncu.pattern.factory.dept.Impl;

import cn.hncu.pattern.factory.dept.Api;

public class DeptImpl2 implements Api{

	@Override
	public String t1() {
		return "22222222222222222";
	}
	
}
以上只是一個簡單的工廠,實際當中的工廠需要將實現類封裝到很深的層次,並且可以由使用者自行選擇想要的實現方法