[url]
普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。首先看下關係圖:
[img]
舉例如下:(我們舉乙個傳送郵件和簡訊的例子)
基礎介面和類
package com.pandy.create.factory;
/*** created by pandy on 14-7-7.
*/public inte***ce isender
package com.pandy.create.factory;
/*** created by pandy on 14-7-7.
*/public class mailsenderimpl implements isender
}
package com.pandy.create.factory;
/*** created by pandy on 14-7-7.
*/public class smssenderimpl implements isender
}
package com.pandy.create.factory.commfactory;
import com.pandy.create.factory.isender;
import com.pandy.create.factory.mailsenderimpl;
import com.pandy.create.factory.smssenderimpl;
/*** 就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。
*/public class sendfactory else if ("sms".equals(type)) else
}}
package com.pandy.create.factory.commfactory;
import com.pandy.create.factory.isender;
/*** 測試類
*/public class factorytest
}
多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。關係圖:
[img]
package com.pandy.create.factory.multmethodfactory;
import com.pandy.create.factory.isender;
import com.pandy.create.factory.mailsenderimpl;
import com.pandy.create.factory.smssenderimpl;
/*** 是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,
* 而多個工廠方法模式是提供多個工廠方法,分別建立物件。
*/public class multmethodfactory
public isender producesms()
}
package com.pandy.create.factory.multmethodfactory;
import com.pandy.create.factory.isender;
/*** * 測試類
*/public class factorytest
}
靜態工廠方法模式,將上面的多個工廠方法模式裡的方法置為靜態的,不需要建立例項,直接呼叫即可。
package com.pandy.create.factory.staticfactory;
import com.pandy.create.factory.isender;
import com.pandy.create.factory.mailsenderimpl;
import com.pandy.create.factory.smssenderimpl;
/*** 將上面的多個工廠方法模式裡的方法置為靜態的,不需要建立例項,直接呼叫即可。
*/public class staticmultmethodfactory
public static isender producesms()
}
package com.pandy.create.factory.staticfactory;
import com.pandy.create.factory.isender;
/*** * 測試類
*/public class factorytest
}
抽象工廠模式(abstract factory)
工廠方法模式有乙個問題就是,類的建立依賴工廠類,也就是說,如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,所以,從設計角度考慮,有一定的問題,如何解決?就用到抽象工廠模式,建立多個工廠類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的**。因為抽象工廠不太好理解,我們先看看圖,然後就和**,就比較容易理解。
[img]
package com.pandy.create.factory.absfactory;
import com.pandy.create.factory.isender;
/*** 工廠的介面
*/public inte***ce provider
package com.pandy.create.factory.absfactory;
import com.pandy.create.factory.isender;
import com.pandy.create.factory.mailsenderimpl;
/*** 郵件工廠
*/public class sendmailfactory implements provider
}
package com.pandy.create.factory.absfactory;
import com.pandy.create.factory.isender;
import com.pandy.create.factory.smssenderimpl;
/*** 簡訊工廠
*/public class sendsmsfactory implements provider
}
package com.pandy.create.factory.absfactory;
import com.pandy.create.factory.isender;
/*** 工廠方法模式有乙個問題就是,類的建立依賴工廠類,
* 也就是說,如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,
* 所以,從設計角度考慮,有一定的問題,如何解決?就用到抽象工廠模式,
* 建立多個工廠類,這樣一旦需要增加新的功能,
* 直接增加新的工廠類就可以了,不需要修改之前的**。**
** 其實這個模式的好處就是,如果你現在想增加乙個功能:
* 發及時資訊,則只需做乙個實現類,實現sender介面,
* 同時做乙個工廠類,實現provider介面,就ok了,
* 無需去改動現成的**。這樣做,拓展性較好!
*/public class factorytest
}
設計模式 工廠設計模式
用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...
設計模式 工廠設計模式
工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...
設計模式 工廠模式(簡單工廠)
一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...