二.設計模式-工廠模式

一.
這裏寫圖片描述
傳統時以pizza類舉例,一個抽象類pizza,由幾個pizza實現類實現,主餐廳看看客戶點什麼便生產,但是如果需要增加新的pizza品種,則要增加一個新的實現類,然後主餐廳裏增加對邏輯的判斷,顯然,違背了開放關閉原則。
所以:工廠模式爲解決某些需要生產大量一批類的問題
二.簡單工廠模式
定義了一個創建對象的類,由這個類來封裝實例化對象的行爲

public class SimplePizzaFactory {

    public Pizza CreatePizza(String ordertype) {
        Pizza pizza = null;

        if (ordertype.equals("cheese")) {
            pizza = new CheesePizza();
        } else if (ordertype.equals("greek")) {
            pizza = new GreekPizza();
        } else if (ordertype.equals("pepper")) {
            pizza = new PepperPizza();
        }
        return pizza;

    }

}

要東西餐廳不生產,直接交給工廠生產:
缺點:新增產品時,需要修改工廠類,不符合開閉原則

ordertype = gettype();
pizza = mSimplePizzaFactory.CreatePizza(ordertype);

三.工廠模式

工廠方法模式:定義了一個創建對象的抽象方法,由子類決定要實例化的類。
工廠方法模式將對象的實例化推遲到子類
鼠標:惠普鼠標 戴爾鼠標 工廠:惠普鼠標工廠 戴爾鼠標工廠 符合開閉原則

abstract Pizza createPizza(String ordertype);

四.抽象工廠模式
抽象工廠模式:定義了一個接口用於創建相關或有依賴關係的對象族,而無需明確指定具體類
把工廠抽象爲藉口,有工廠實現類(倫敦的工廠,巴黎的工廠),創建一個訂單,參數傳入指定的工廠,讓其去生產。
這裏寫圖片描述

mOrderPizza=new OrderPizza(new LDFactory());

五.關鍵點
變量不要持有具體類的引用
不要讓類繼承自具體類,要繼承自抽象類或接口
不要覆蓋基類中已實現的方法

發佈了88 篇原創文章 · 獲贊 23 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章