1. 程式人生 > >設計模式:簡單工廠模式

設計模式:簡單工廠模式

簡單工廠模式又叫做靜態工廠方法模式,不屬於23種設計模式中的一種。
簡單工廠模式是工廠模式家族中最簡單的一種。

簡單工廠模式具有以下優點:

  • 讓外界可以從直接建立具體物件的尷尬局面解脫出來,僅僅負責“消費”物件就可以了
  • 外界不必管這些物件究竟如何建立及組織的
  • 明確了各自的職責與權利,有利於整個軟體體系的優化

有優點自然會有缺點的,那麼簡單工廠模式還有什麼不足的地方?、

  • 集中了所有例項的建立邏輯,違反了高內聚責任分配原則
  • 它所能建立的類只能是事先考慮到的
  • 當具體產品類不斷增多的時候,會出現要求工廠類根據不同條件建立不同的例項的需求

以上不足之處在工廠方法模式中有一定的改善。

繼續說我們的簡單工廠模式,儘管有不足,但是也有它合適使用的場景的

  • 工廠類負責建立的物件比較少
  • 客戶只知道傳入工廠類的引數,對於建立的過程並不關心
  • 由於違反了高內聚責任分配原則,因此只能在比較簡單的情況下使用

應用場景

當A類中需要呼叫B類中的方法的時候,很多人會選擇使用new關鍵字,直接在A類中建立一個B例項,然後使用B例項去呼叫B例項中的方法。這種寫法,從語法角度看來是沒有任何問題的,但是這種做法的壞處在於,在A類中的方法直接呼叫了B類的類名。假如不只有在A類中使用到B類,在幾十上百個類中都以這樣的方法用到B類。一旦我們的需求更改需要用C類代替B類的話就要修改幾十上百個地方。
又或者,需要使用兩種不同方式(分別是B類和C類)去完成同一件事的時候,也是可以通過使用簡單工廠模式去處理。

拿登入的例子來說

一般登入可能會同時存在兩種登入方式,例如:手機號碼登入和郵箱登入。兩種登入都會有相同的方法,比如login()登入方法。那麼我們新建一個介面Login:

public interface Login {
void login();
}

然後讓郵箱登入的類與手機號碼登入的類分別實現該介面:
郵箱登入

public class EmailLogin implements Login{

    @Override
    public void login() {
        // TODO Auto-generated method stub
        System.out.println("郵箱登入"
); } }

電話登入

public class TelLogin implements Login{

    @Override
    public void login() {
        // TODO Auto-generated method stub
        System.out.println("電話號碼登入");
    }



}

接下來使用一個工廠類負責生成這兩個類的例項:


public class LoginFactory {
public static Login createLogin(String type){
    switch(type){
    case "email":
        return new EmailLogin();

    case "tel":
return new TelLogin();
default:
    throw new RuntimeException("沒有這種型別");
    }
    }
}

就這樣外部(Main類)只需要傳入對應的引數即可生成對應的例項,外部只管消費不管生產的過程。


public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        LoginFactory.createLogin("email").login();
        LoginFactory.createLogin("tel").login();
    }

}

執行結果:執行結果

需要不同的物件傳入不同的引數即可生成想要的物件。

現在的app很多都需要登入,但是往往註冊完之後只登陸一次就不用在登入了。那麼造成的結果就是使用者非常容易忘記密碼。因此很多app都會使用手機驗證碼方式登入。那麼現在要把電話號碼登入改成驗證碼登入。我們只需要新建一個電話號碼驗證碼登入類,然後在工廠類上面修改一下就好了。

相關推薦

C#設計模式之創建類模式簡單工廠模式

div main bst http fin 想要 對象 sqlserver 關鍵字 這是記錄設計模式種的創建型模式的第一篇,所以,在開頭要說一些關於創建型模式的含義和意義。 創建型模式 軟件系統在運行時,類將被實例化成對象,並由這些被創建的對象協作完成系統中要求的各項業務功

大話設計模式簡單工廠模式

    由於面向過程程式設計造成的程式碼膨脹問題越來越嚴重,使其維護的代價高,靈活性很低。為了使程式碼易維護、易擴充套件、易複用和靈活性好,所以我們在採用面向物件程式設計的時候,防止採用面向物件的語言實際上卻做著面向過程的事兒,更需要採用某種設計模式,核心就是使程式變得高內

c++設計模式簡單工廠模式(Simple Factory Pattern)

 定義: 從設計模式的型別上來說,簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(StaticFactory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠物件決定創建出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,

設計模式簡單工廠模式

簡單工廠模式又叫做靜態工廠方法模式,不屬於23種設計模式中的一種。 簡單工廠模式是工廠模式家族中最簡單的一種。 簡單工廠模式具有以下優點: 讓外界可以從直接建立具體物件的尷尬局面解脫出來,僅僅負責“消費”物件就可以了 外界不必管這些物件究竟如何建立及組織

工廠模式簡單工廠模式工廠方法模式、抽象工廠模式

工廠模式適合凡是出現大量物件需要建立,而且這些物件擁有相同的介面,可以使用工廠模式進行建立。 簡單工廠模式 簡單工廠模式分為三種:普通工廠模式、多個方法工廠模式、靜態方法工廠模式 以傳送QQ訊息或者微信訊息為例來說明: 普通工廠模式 /** *

設計模式筆記1簡單工廠模式

1.3 簡單 修改 作用 面向對象 對象 面向 tro 計算   如果想成為一名更優秀的軟件設計師,了解優秀軟件設計的演變過程比學習優秀設計本身更有價值。 1.1 面向對象的好處   通過封裝、繼承多態把程序的耦合度降低,使用設計模式使得程序更加靈活,容易修改,易於復用

初識設計模式1簡單工廠模式

簡單工廠 height 判斷 目前 mes strong 產品 return logs 簡單工廠模式 簡單工廠模式是類的創建模式,又叫做靜態工廠方法模式。簡單工廠模式由一個工廠對象決定生產出哪一種產品類的實例。 為什麽要使用簡單工廠模式 原因很簡單:解耦。 LOL場

設計模式筆記簡單工廠模式 -- 創建型

-- 一個 筆記 簡單 靜態 com 工廠模式 不同 static 簡單工廠模式 定義一個工廠類,可以根據輸入的不同返回不同類的實例。被創建的類通常有共同的父類。因為通常創建實例的方法都是static,所以又被稱為靜態工廠模式 代碼樣例 設計模式筆記:簡單

Java設計模式(一)之建立型模式工廠模式簡單工廠模式+工廠方法模式

在面向物件程式設計中, 最通常的方法是一個new操作符產生一個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下, new操作符直接生成物件會帶來一些問題。舉例來說,許多型別物件的建立需要一系列的步驟:你可能需要計算或取得物件的初始位置;選擇生成哪個子物件例項;或在你生成你需要的物件

Java 設計模式(一)簡單工廠模式

參考連結:簡單工廠模式-Simple Factory Pattern 1. 模式概述 定義:定義一個工廠類,它可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。因為在簡單工廠模式中用於建立例項的方法是靜態方法,因此簡單工廠模式又被稱為靜態工廠方法模式。 簡

設計模式之一簡單工廠模式

package com.xjh.demo.designpattern.pattern1; public abstract class Animal { public abstract void eat(); } package com.xjh.demo.de

筆記十三設計模式簡單工廠模式工廠方法模式、抽象工廠模式

引言: 假設現在有一個超市(Market),超市銷售餅乾(Biscuit)、水果(Fruit)、飲料(Drink)三種食品。 按照常規,我們建立三個類:class Biscuit、class Fruit、class Drink。 class Bis

設計模式簡單工廠與策略模式

簡單工廠,真的是特別簡單的一個設計模式。 工廠方法內定義需要用到的方法的父類, 根據傳遞的引數來決定例項化何種子類物件。 //演算法的父類,抽象出返回結果的介面 public interface

PHP設計模式系列簡單工廠模式

簡單工廠模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。簡單工廠模式是由一個工廠物件決定創建出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解

JAVA設計模式(01)建立型-工廠模式簡單工廠模式】(Simple Factory)

     工廠模式是最常用的一類建立型設計模式,通常我們所說的工廠模式是指工廠方法模式,它也是使用頻率最高的工廠模式。本章將要學習的簡單工廠模式是工廠方法模式的“小弟”,它不屬於GoF 23種設計模式,但在軟體開發中應用也較為頻繁,通常將它作為學習其他工廠模式的入門。此

設計模式之一簡單工廠模式,用python實現簡易計算器

最近自學Python,想做些小專案練練手,發現程傑寫的大話設計模式這書不錯,適合新手入門。開始這本書第一章學習,這裡實現簡單工廠模式。以實現圖形介面的簡易計算器為例項,能夠計算+-/*% ( )等混合表示式,ps: 沒有實現負數的功能。具體過程大致分為以下幾個步

設計模式系列之一簡單工廠模式

前言 設計模式能夠幫助我們設計出健壯,低耦合性的程式碼,從此和高耦合的程式碼say goodbye!在所有的的設計模式中,簡單工廠算是我們平時接觸比較多的吧,多執行緒中的消費者工廠類與生產者工廠類應該算是接觸最早的設計模式,簡單工廠模式要解決的首要問題就是降低

大話設計模式簡單工廠模式

一.模式定義 簡單工廠模式也稱為靜態工廠模式。屬於類建立型設計模式。實質是一個“”工廠系統“”可以產生出多種不同的”產品物件”,使用者不需要知道“”產品物件“”是怎麼產生的,只需要知道關於該“產品物件”的關鍵引數,將該引數傳給“工廠系統”就可以由工廠系統生產出對應的產品。

設計模式簡單工廠工廠方法、抽象工廠之小結與區別

簡單工廠,工廠方法,抽象工廠都屬於設計模式中的建立型模式。其主要功能都是幫助我們把物件的例項化部分抽取了出來,優化了系統的架構,並且增強了系統的擴充套件性。 本文是本人對這三種模式學習後的一個小結以及對他們之間的區別的理解。 簡單工廠 簡單工廠模式的工廠類一般是使

Java描述設計模式(02)簡單工廠模式

一、生活場景簡介 1、引入場景 訂餐流程簡單描述 1)、食品抽象類,規定食品的基礎屬性操作 2)、魚類,雞肉類食品類擴充套件 3)