第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Java設(shè)計(jì)模式 - 抽象工廠

標(biāo)簽:
Java Android
一、抽象工厂模式

抽象工厂模式是工厂方法模式的升级版,工厂方法中的每一个具体的工厂类负责生产一种对应的产品,而抽象工厂模式中的一个具体的工厂类负责的是生产一个产品线上的一个或多个产品。相对来说,抽象工厂模式不易扩展商品,但易扩展生产商品线的工厂类,也就是说商品线易扩展。

来看看工厂方法中产品的扩展:

//定义一个动物类
public interface Anim {
  void eat();
}

//定义一个动物工厂类
public interface AnimFactory {
  Anim create();
}

//增加一个动物:鸟
public class Bird implements Anim {
  public void eat() {
    //....
  }
}

//创建鸟的具体工厂类
public BirdFactory implements AnimFactory {
  public static Bird create() {
      return new Bird();
  }
}

我们可以看到,每个具体的工厂类只负责生产一个具体的商品,当新增商品时,只需要新增一个具体的工厂类即可,扩展性很高。

而对于抽象工厂方法:

//定义一个动物类
public interface Anim {
  void eat();
}

//定义一个动物工厂类
public interface AnimFactory {
  Anim createBird();
  Anim createFish();
}

//增加一个动物:鸟
public class Bird implements Anim {
  public void eat() {
    //....
  }
}

//增加一个动物:鱼
public class Fish implements Anim {
  public void eat() {
    //....
  }
}

//创建具体工厂类:饲养场A
public FactoryA implements AnimFactory {
  public static Bird createBird() {
      return new Bird();
  }

  public static Fish createFish() {
      return new Fish();
  }
}

从中我们可以看到,一个产品线上的产品:鸟和鱼,被一个饲养场生产出来,而如果有第二个饲养场饲养这个产品线上的动物,只需要实现AnimFactory接口即可,所以扩展产品线非常简单,而一旦产品线上的产品需要增加时,就变成了“毒瘤代码”,AnimFactory需要新增创建新产品的方法,而其具体的实现类FactoryA、FactoryB...也需要做相应的修改,代价太大。

以上便是工厂方法模式和抽象工厂模式的最大区别。

二、 jdk中的抽象工厂模式

jdk中连接数据库的代码是典型的抽象工厂模式,每一种数据库只需提供一个统一的接口:Driver(工厂类),并实现其中的方法即可。不管是jdbc还是odbc都能够通过扩展产品线来达到连接自身数据库的方法。

public interface Driver {

    Connection connect(String url, java.util.Properties info) 
      throws SQLException;

    boolean acceptsURL(String url) throws SQLException;

    DriverPropertyInfo[] getPropertyInfo(String url, java.util.Properties info) 
      throws  SQLException;

    int getMajorVersion();

    int getMinorVersion();

    boolean jdbcCompliant();

    public Logger getParentLogger() 
      throws SQLFeatureNotSupportedException;
}

具体可看源码。

本文由慕课网 ifynn原创,转载请注明!

點(diǎn)擊查看更多內(nèi)容
14人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開(kāi)發(fā)工程師
手記
粉絲
17
獲贊與收藏
653

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消