標籤:port 不同的 拼接 size 原廠模式 class one int nts
原廠模式:原廠模式是利用工廠類的Factory 方法建立對象的一種設計模式,目的是建立對象,但是很多時候建立對象我們會考慮很多其他因素~~~~比如限定輸入,限定傳回值是否某個,比如在建立的過程中進行一些判斷,通過不同的原廠模式就能把這些東西分離開來。
package com.dhh.test;import org.junit.Test;public class Test2 { @Test public void t() throws InstantiationException, IllegalAccessException, ClassNotFoundException{ //A類實現了C介面可以返回 A a=(A) Factory.builder("A"); System.out.println(a.name); //B也實現了C介面可以返回,但是我試過如果B去除了C介面則不可以返回從而限制了建立類的類型 B b=(B) Factory.builder("B"); System.out.println(b.name); }}class Factory{ //C作為介面居然可以是傳回值 static public C builder(String typeName ) throws InstantiationException, IllegalAccessException, ClassNotFoundException{ //反射建立類 //直接傳入A,B類型名,工廠內部拼接許可權定名可以限制建立類的包 Object o=Class.forName("com.dhh.test."+typeName).newInstance(); //居然可以強轉C介面 return (C) o; }}interface C{ }class A implements C{ String name="168";}class B implements C{ String name="178";}
以上是一個靜態工廠的建立類的過程,建立類的所有過程都被隱藏
原廠模式(think in java中的設計模式)