核心思想
- 在簡(jiǎn)單工廠模式的基礎(chǔ)上進(jìn)一步的抽象化
- 具備更多的可擴(kuò)展和復(fù)用性,增強(qiáng)代碼的可讀性
- 使添加產(chǎn)品不需要修改原來(lái)的代碼,滿足開(kāi)閉原則
優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
- 符合單一職責(zé),每個(gè)工廠只負(fù)責(zé)生產(chǎn)對(duì)應(yīng)的產(chǎn)品
- 符合開(kāi)閉原則,添加產(chǎn)品只需添加對(duì)應(yīng)的產(chǎn)品類和工廠類
- 使用者只需要知道產(chǎn)品抽象類,不需要關(guān)心其它實(shí)現(xiàn)類。滿足迪米特法則、依賴倒置原則和里氏替換原則
缺點(diǎn)
- 添加一個(gè)產(chǎn)品,需要實(shí)現(xiàn)對(duì)應(yīng)的工廠類和產(chǎn)品類
- 每個(gè)產(chǎn)品需要有對(duì)應(yīng)的產(chǎn)品類和工廠類
代碼示例
產(chǎn)品抽象接口
/**
* 支付類
*/
public interface Pay {
/**
* 統(tǒng)一下單
*/
void unifiedorder();
}
抽象工廠
/**
* 抽象工廠
*/
public interface IFactory {
/**
* 獲取支付類
* @return
*/
Pay getPay();
}
產(chǎn)品具體實(shí)現(xiàn)類
public class AliPay implements Pay{
@Override
public void unifiedorder() {
System.out.println("支付寶 支付統(tǒng)一下單");
}
}
public class WechatPay implements Pay{
@Override
public void unifiedorder() {
System.out.println("微信 支付統(tǒng)一下單");
}
}
工廠具體實(shí)現(xiàn)類
/**
*
*/
public class AliFactory implements IFactory{
/**
* 獲取支付類
* @return
*/
@Override
public Pay getPay(){
return new AliPay();
}
}
/**
*
*/
public class WechatFactory implements IFactory{
/**
* 獲取支付類
* @return
*/
@Override
public Pay getPay(){
return new WechatPay();
}
}
測(cè)試
public class AppRun {
public static void main(String[] args) {
IFactory iFactory = new AliFactory();
Pay pay = iFactory.getPay();
//獲取支付
pay.unifiedorder();
}
}
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-673657.html
public class AppRun {
public static void main(String[] args) {
IFactory iFactory = new WechatFactory();
Pay pay = iFactory.getPay();
//獲取支付
pay.unifiedorder();
}
}
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-673657.html
到了這里,關(guān)于設(shè)計(jì)模式-工廠設(shè)計(jì)模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!