Java的設計思想之工廠的實現
阿新 • • 發佈:2019-02-16
場景與問題
Java程式開發講究面向介面程式設計,需要隱藏具體的實現類,如何解決其問題。
這個時候我們就需要用“介面 工廠 實現類”----鐵三角。來幫助我們解決問題
第一個類是我們的客戶端。。。。我們通過介面隱藏我們背後的實現類,當我們更改實現類中的函式,客戶端的輸出也會有相應的變化,但是客戶端的資料不需要發生變動
這是一個Api接口裡面寫了一個抽象函式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); } }
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"; } }