中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

濟寧網(wǎng)站建設(shè)專家seo入門基礎(chǔ)教程

濟寧網(wǎng)站建設(shè)專家,seo入門基礎(chǔ)教程,網(wǎng)站優(yōu)化圖片,南京房地產(chǎn)網(wǎng)站設(shè)計模式—創(chuàng)建型模式之工廠模式 工廠模式(Factory Pattern)提供了一種創(chuàng)建對象的最佳方式。我們不必關(guān)心對象的創(chuàng)建細節(jié),只需要根據(jù)不同情況獲取不同產(chǎn)品即可。 簡單工廠模式 比如我們有造車的工廠,來生產(chǎn)車,我們先…

設(shè)計模式—創(chuàng)建型模式之工廠模式

工廠模式(Factory Pattern)提供了一種創(chuàng)建對象的最佳方式。我們不必關(guān)心對象的創(chuàng)建細節(jié),只需要根據(jù)不同情況獲取不同產(chǎn)品即可。

簡單工廠模式

比如我們有造車的工廠,來生產(chǎn)車,我們先定義一個抽象車產(chǎn)品:

//抽象車產(chǎn)品類
public abstract class AbstractCar { String engine;public abstract void run();
}

我們有兩個具體的產(chǎn)品,貨車和家用小汽車,都繼承自抽象車:

//貨車
public class Truck extends AbstractCar{public Truck() {this.engine = "貨車引擎";}@Overridepublic void run() {System.out.println(this.engine+"--->正在運行");}
}
//家用小汽車
public class MiniCar extends AbstractCar{public MiniCar() {this.engine = "家用小汽車引擎";}@Overridepublic void run() {System.out.println(this.engine + "----------》正在運行");}
}

那我們的工廠可以如此定義:

public class MySimpleFactory {/*** 獲取車* @param type* @return*/public AbstractCar newCar(String type){if("truck".equals(type)){return new Truck();}else if("mini".equals(type)){return new MiniCar();}return null;}
}

一般簡單工廠生產(chǎn)的產(chǎn)品優(yōu)先。

測試類如下:

public class SimpleFactoryTest {public static void main(String[] args) {MySimpleFactory factory = new MySimpleFactory();AbstractCar truck = factory.newCar("truck");AbstractCar mini = factory.newCar("mini");truck.run();mini.run();}
}

運行如下:

運行效果

缺點

**違反了開閉原則,擴展不易。**如果有大量的產(chǎn)品,會有大量的if else。

工廠方法模式

因為簡單工廠模式,會出現(xiàn)大量的if else,并不能滿足打開擴展、關(guān)閉修改的原則,我們希望,如果有擴展,直接擴展一個類就好,不區(qū)改動創(chuàng)造類型的代碼,這樣工廠方法模式就出現(xiàn)了。我們可以把工廠再進行抽象,把我們的工廠提升一個層次。

抽象類或者接口,就會有多個實現(xiàn);有多實現(xiàn) 就會有多功能。

抽象工廠如下:

public abstract class AbstarctCarFactory {public abstract AbstractCar newCar();
}

我們的貨車、小汽車,分別由不同的工廠來創(chuàng)建:

//貨車工廠
public class TruckFactory extends AbstarctCarFactory {@Overridepublic AbstractCar newCar() {return new Truck();}
}
//小汽車工廠
public class MiniCarFactory extends AbstarctCarFactory {@Overridepublic AbstractCar newCar() {return new MiniCar();}
}

測試類如下:

public class FactoryMethodTest {public static void main(String[] args) {AbstarctCarFactory miniCarFactory = new MiniCarFactory();AbstractCar miniCar = miniCarFactory.newCar();miniCar.run();TruckFactory truckFactory = new TruckFactory();AbstractCar truck = truckFactory.newCar();truck.run();}
}

運行結(jié)果如下:

運行結(jié)果

這樣,如果我們有新的類型,可以直接繼承這個抽象工廠即可。

缺點

系統(tǒng)復(fù)雜度增加,可創(chuàng)建的品類單一。

抽象工廠模式

我們先來區(qū)分兩個概念:

  • 產(chǎn)品等級:比如手機可以分為低配版手機、高配版手機;產(chǎn)品等級結(jié)構(gòu)即產(chǎn)品的繼承結(jié)構(gòu),如抽象類為手機,可以有拍照手機、游戲手機等等。
  • 產(chǎn)品族:產(chǎn)品可以分為手機、汽車等,這是產(chǎn)品族。在抽象工廠模式中,產(chǎn)品族是指由同一個工廠生產(chǎn)的,位于不同產(chǎn)品等級結(jié)構(gòu)中的一組產(chǎn)品。

在車的產(chǎn)品基礎(chǔ)上,我們又增加了新的產(chǎn)品,手機。

public abstract class AbstractPhone {//手機類型String type;public abstract void run();
}public class GamePhone extends AbstractPhone {public GamePhone() {this.type = "游戲手機";}@Overridepublic void run() {System.out.println(this.type + "正在運行了...");}
}public class MyPhotoPhoneFactory implements MyAbstarctFactory{@Overridepublic AbstractPhone newPhone() {return new PhotoPhone();}
}

如果我們想生產(chǎn)車和手機,我們可以定義抽象工廠:

public interface  MyAbstarctFactory {default AbstractCar newCar(){return null;}default AbstractPhone newPhone(){return null;}
}

生產(chǎn)手機的工廠分別為:

public class MyGamePhoneFactory implements MyAbstarctFactory{@Overridepublic AbstractPhone newPhone() {return new GamePhone();}
}
public class MyPhotoPhoneFactory implements MyAbstarctFactory{@Overridepublic AbstractPhone newPhone() {return new PhotoPhone();}
}

生產(chǎn)車的工廠分別為:

public class MyMiniCarFactory implements MyAbstarctFactory{@Overridepublic AbstractCar newCar() {return new MiniCar();}
}public class MyTruckCarFactory implements MyAbstarctFactory{@Overridepublic AbstractCar newCar() {return new Truck();}
}

測試類如下:

public class MyTest {public static void main(String[] args) {MyAbstarctFactory factory = new MyGamePhoneFactory();AbstractPhone abstractPhone = factory.newPhone();abstractPhone.run();factory = new MyMiniCarFactory();AbstractCar abstractCar = factory.newCar();abstractCar.run();}
}

運行如下:

運行結(jié)果

可以看到,我們在擴展時,都是新增類,而不是修改原有的方法。

http://www.risenshineclean.com/news/2573.html

相關(guān)文章:

  • 做設(shè)計那些網(wǎng)站可以賣設(shè)計怎么做小說推廣掙錢
  • wordpress添加用戶關(guān)閉郵箱網(wǎng)絡(luò)關(guān)鍵詞優(yōu)化方法
  • 便宜的vps租用網(wǎng)站專業(yè)seo優(yōu)化推廣
  • 深圳做微信網(wǎng)站制作企業(yè)如何開展網(wǎng)絡(luò)營銷
  • 做網(wǎng)站填素材關(guān)鍵詞優(yōu)化方法有什么步驟
  • 溫州市建設(shè)質(zhì)量監(jiān)督站網(wǎng)站福建seo排名培訓(xùn)
  • 一人開公司做網(wǎng)站創(chuàng)業(yè)百度指數(shù)人群畫像哪里查詢
  • 變更股東怎樣在工商網(wǎng)站做公示關(guān)鍵詞挖掘工具網(wǎng)站
  • 企業(yè)安全文化實現(xiàn)的途徑網(wǎng)站推廣優(yōu)化流程
  • 廣州市市場監(jiān)督管理局手機優(yōu)化大師下載安裝
  • 金華哪里做網(wǎng)站怎么做百度推廣平臺
  • wordpress文章中文版愛站seo查詢軟件
  • 海北高端網(wǎng)站建設(shè)價格龍華百度快速排名
  • 做棋牌網(wǎng)站合法嗎網(wǎng)站排名seo
  • 官網(wǎng)網(wǎng)站設(shè)計費用網(wǎng)絡(luò)優(yōu)化seo薪酬
  • 云南企業(yè)建站企業(yè)網(wǎng)絡(luò)營銷顧問
  • 你的網(wǎng)站正在建設(shè)中新聞稿件代發(fā)平臺
  • 坑梓網(wǎng)站建設(shè)流程網(wǎng)絡(luò)seo是什么意思
  • 文件網(wǎng)站建設(shè)百中搜優(yōu)化軟件靠譜嗎
  • wordpress 按鈕美化網(wǎng)站seo推廣
  • 微網(wǎng)站站點名稱網(wǎng)絡(luò)營銷策劃內(nèi)容
  • b2c網(wǎng)站開發(fā)公司福州seo推廣外包
  • 網(wǎng)站和公眾號的區(qū)別是什么意思互聯(lián)網(wǎng)營銷方式
  • 天河區(qū)做網(wǎng)站公司產(chǎn)品推廣的目的和意義
  • 千度網(wǎng)站sem競價推廣怎么做
  • 做網(wǎng)站 域名不屬于十大seo公司
  • 深圳 seo 外貿(mào)網(wǎng)站建設(shè) 多語種網(wǎng)頁設(shè)計軟件有哪些
  • 金華品牌網(wǎng)站建設(shè)百度愛采購客服電話
  • 義烏開鎖做網(wǎng)站哪個好怎么在百度上發(fā)表文章
  • 養(yǎng)生網(wǎng)站建設(shè)免費網(wǎng)絡(luò)輿情管控