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

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

河北省住房城鄉(xiāng)建設(shè)廳網(wǎng)站防城港網(wǎng)站seo

河北省住房城鄉(xiāng)建設(shè)廳網(wǎng)站,防城港網(wǎng)站seo,沈陽市有做網(wǎng)站的公司,萊蕪都市網(wǎng)旗下論壇目錄 1. 簡單工廠模式 2. 工廠方法模式 1. 簡單工廠模式 簡單工廠模式(Simple Factory Patterm)又稱為靜態(tài)工廠方法模式(Static Factory Model),它屬于類創(chuàng)建型模式。在簡單工廠模式中,可以根據(jù)參數(shù)的不同返回不同類的實例。簡單工廠模式專門定義了一…

目錄

1. 簡單工廠模式

2. 工廠方法模式

1. 簡單工廠模式

簡單工廠模式(Simple Factory Patterm)又稱為靜態(tài)工廠方法模式(Static Factory Model),它屬于類創(chuàng)建型模式。在簡單工廠模式中,可以根據(jù)參數(shù)的不同返回不同類的實例。簡單工廠模式專門定義了一個類來負(fù)責(zé)創(chuàng)建其他類的實例,被創(chuàng)建的實例通常都有共同的父類。

實現(xiàn)

首先定義一個抽象類 Product 和繼承 Product 的實體類(ProductA/productB)。實體類要實現(xiàn)抽象類Product 里的抽象方法 method(),在各自的 method() 方法里實現(xiàn)自己的功能。下一步定義工廠類?Factory。

工廠類里有一個 createProduct() 方法,根據(jù)傳入的參數(shù)來判斷返回的對象類型。

?步驟1:創(chuàng)建抽象類 Product

abstract public class Product{public abstract void print();
}

步驟2:創(chuàng)建繼承 Product 的實體類

public class ProductA extends Product{@overridepublic void print(){System.out.println("產(chǎn)品A");.....}
}
public class ProductB extends Product{@overridepublic void print(){System.out.println("產(chǎn)品B");......}
}

步驟3:創(chuàng)建一個工廠,返回特定的產(chǎn)品對象

public class ProductFactory{// 創(chuàng)建具體產(chǎn)品實例public static Product createProduct(String type){if(type == null){return null;}if(type.equals("A"){return new ProductA();} else{return new ProductB();}}
}

?步驟4:使用該工廠,通過傳遞類型信息來獲取實體類的對象

public class SimpleFactoryPattermDemo{public static void main(String[] args){// createProduct("A") 里傳入?yún)?shù)A, 獲取到 ProductA 對象Product productA = ProductFactory.createProduct("A");productA.print();// createProduct("B") 里傳入?yún)?shù)A, 獲取到 ProductB 對象Product productB = ProductFactory.createProduct("B"):productB.print();}
}

優(yōu)點:對象的創(chuàng)建和使用是分離的??蛻舳藷o需知道創(chuàng)建對象的細(xì)節(jié),也無需直接創(chuàng)建產(chǎn)品對象。

缺點:?系統(tǒng)擴(kuò)展困難,違背了開閉原則。當(dāng)我們新增一個 ProductC時,在步驟3中就會修改 createProduct 的邏輯,新增一個 if 語句來滿足 ProductC 對象的創(chuàng)建和返回。這一點就違背了開閉原則的修改關(guān)閉。

2. 工廠方法模式

由于簡單工廠模式不符合開閉原則,因此引入了工廠方法模式,也稱為工廠模式,它完全符合開閉原則。

?工廠方法模式是 Java 中最常用的設(shè)計模式之一。這種類型的設(shè)計模式屬于類創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。在工廠模式中,我們在創(chuàng)建對象時不會對客戶端暴露創(chuàng)建邏輯,并且是通過使用一個共同的接口來指向新創(chuàng)建的對象。

實現(xiàn):

?步驟1:創(chuàng)建一個Coffee 接口

public interface Coffee{void createCoffee();
}

步驟2:創(chuàng)建實現(xiàn) Coffee 接口的實體類

public class AmericanCoffee implements Coffee{@overridepublic void createCoffee(){System.out.println("create AmericanCoffee");....}
}
public class LatteCoffee implements Coffee{@overridepublic void createCoffee(){System.out.println("create LatteCoffee");....}
}

步驟3:創(chuàng)建一個 Factory 接口

public interface CoffeeFactory{Coffee createCoffeeInstance();
}

步驟4:創(chuàng)建實現(xiàn) CoffeeFactory 接口的實體類,分別對應(yīng)步驟2中 的 Coffee 實體類

public class AmericanCoffeeFactory implements CoffeeFactory{@overridepublic Coffee createCoffeeInstance(){System.out.println("return a AmericanCoffee`s instance");return new AmericanCoffee();}
}
public class LatteCoffeeFactory implements CoffeeFactory{@overridepublic Coffee createCoffeeInstance(){System.out.println("return a LatteCoffee`s instance");return new LatteCoffee();}
}

?步驟5:使用 CoffeeFactory 來獲取 Coffee 實例

public class FactoryPatternDemo{public static void main(Stirng[] args){// TODO 寫法1// 通過配置文件的方式來判斷具體是哪一種 Coffee, 然后使用對應(yīng)的CoffeeFactoryCoffeeFactory coffeeFactory = new CoffeeFactory();Coffee coffee = coffeeFactory.createCoffeeInstance();coffee.createCoffee();}
}

當(dāng)我們需要新增加一個 BlackCoffee 時,只需要新建類?BlackCoffee implements Coffee 和 BlackCoffeeFactory implements CoffeeFactory 就 ok了,滿足了開閉原則中的擴(kuò)展開發(fā),修改關(guān)閉。

優(yōu)點:

用戶只需要知道具體工廠的名稱就可得到所要的產(chǎn)品,無須知道產(chǎn)品的具體創(chuàng)建過程; 在系統(tǒng)增加新的產(chǎn)品時只需要添加具體產(chǎn)品類和對應(yīng)的具體工廠類,無須對原工廠進(jìn)行任何修改,滿足開閉原則

注意:復(fù)雜對象適合使用工廠模式,而簡單對象,特別是只需要通過 new 就可以完成創(chuàng)建的對象,無需使用工廠模式。如果使用工廠模式,就需要引入一個工廠類,會增加系統(tǒng)的復(fù)雜度。

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

相關(guān)文章:

  • 影響網(wǎng)站速度嗎網(wǎng)站優(yōu)化哪家好
  • 網(wǎng)頁制作成品網(wǎng)站寧波百度推廣優(yōu)化
  • 鄭州做網(wǎng)站好的公企業(yè)官方網(wǎng)站推廣
  • 自己做外貿(mào)網(wǎng)站站長平臺官網(wǎng)
  • 電腦網(wǎng)站開發(fā)seo發(fā)包技術(shù)教程
  • 企業(yè)網(wǎng)站特點分析與描述百度收錄時間
  • 做網(wǎng)站 提要求win7系統(tǒng)優(yōu)化軟件
  • 做網(wǎng)站原型圖是用什么軟件業(yè)務(wù)網(wǎng)站制作
  • 網(wǎng)站后臺怎么掛廣告 怎么做長沙百度貼吧
  • 天津建設(shè)合同備案網(wǎng)站特大新聞凌晨剛剛發(fā)生
  • 小型玩具企業(yè)網(wǎng)站建設(shè)初期階段任務(wù)服務(wù)器
  • 做網(wǎng)站開發(fā)的網(wǎng)站做外鏈平臺有哪些
  • 上海裝修網(wǎng)官網(wǎng)長沙電商優(yōu)化
  • 洛陽做網(wǎng)站漢獅網(wǎng)絡(luò)seo優(yōu)化是什么意思
  • 微微網(wǎng)站建設(shè)交換友情鏈接推廣法
  • 東莞專業(yè)做網(wǎng)站的公司有哪些seo外包推廣
  • 深圳網(wǎng)站優(yōu)化教程廣州seo優(yōu)化電話
  • 邯鄲市網(wǎng)站建設(shè)新手怎么學(xué)電商運(yùn)營
  • 做網(wǎng)站域名的公司網(wǎng)站模板怎么建站
  • 如何做微信官方網(wǎng)站如何快速推廣
  • 網(wǎng)站全站開發(fā)需要學(xué)什么bt櫻桃 磁力島
  • 人與狗做的網(wǎng)站手機(jī)怎么建立網(wǎng)站
  • 如何測試 網(wǎng)站seo免費(fèi)教程
  • 網(wǎng)站無障礙建設(shè)規(guī)定北京seo優(yōu)化哪家公司好
  • 網(wǎng)站建設(shè)太金手指六六六免費(fèi)關(guān)鍵詞優(yōu)化工具
  • 做網(wǎng)站哪家南京做網(wǎng)站中國培訓(xùn)網(wǎng)官網(wǎng)
  • 網(wǎng)站平面設(shè)計百度指數(shù)怎么看排名
  • 網(wǎng)站界面設(shè)計工具網(wǎng)絡(luò)營銷的認(rèn)知
  • 企業(yè)網(wǎng)站建設(shè)綜合實訓(xùn)心得體會一千字100個常用的關(guān)鍵詞
  • wordpress建網(wǎng)站缺點建站寶盒