我的CSDN的BLOG:http://blog.csdn.net/feb13/article/details/7880387java
SIMPLE FACTORY簡單工廠編程
一、 意圖api
提供一個建立對象實例的功能,而無需關心其具體實現。被建立實例的類型能夠是接口、抽象類,也能夠是具體的類。ide
二、 適用性測試
三、 結構.net
四、 參與者code
Api:定義客戶所須要的功能接口。對象
Impl:具體實現Api的實現類,可能會有多個。blog
Factory:工廠,選擇合適的實現類來建立Api接口對象。接口
Client:客戶端,經過Factory來獲取Api接口對象,而後面向Api接口編程。
五、 協做
六、 效果
簡單工廠的本質在於爲客戶端來選擇相應的實現,從而使得客戶端和實現之間解耦。
優先:
幫助封裝。
解耦。經過簡單工廠,實現客戶端和具體實現類的解耦。
缺點:
可能增長客戶端的複雜度。
不方便擴展子工廠。
七、 示例
Api
package com.examples.pattern.simpletFactory; public interface Api { public void operation(String s); }
Impl
package com.examples.pattern.simpletFactory; public class Impl implements Api { @Override public void operation(String s) { System.out.println(">>>>>>>>>>>>>>"+s); } }
Factory
package com.examples.pattern.simpletFactory; public class Factory { public Api createApi(){ return new Impl(); } }
Client
package com.examples.pattern.simpletFactory; public class Client { public static void main(String[] args) { Api api = new Factory().createApi(); api.operation("測試簡單工廠模式......."); } }
八、 相關模式
若是抽象工廠退化成爲只有一個實現,不分層次,那麼就至關於簡單工廠了。
把工廠方法中的選擇實現放到父類直接實現,那麼就等同於簡單工廠。