設計模式——簡單工廠

我的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("測試簡單工廠模式.......");
	}

}


八、 相關模式

若是抽象工廠退化成爲只有一個實現,不分層次,那麼就至關於簡單工廠了。

把工廠方法中的選擇實現放到父類直接實現,那麼就等同於簡單工廠。

相關文章
相關標籤/搜索