設計模式 工廠

2021-09-02 03:40:06 字數 3920 閱讀 1535

[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 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...