1. 程式人生 > >【設計模式】【四】簡單工廠模式

【設計模式】【四】簡單工廠模式

相關文章

1.簡單工廠模式簡介

定義

簡單工廠模式屬於建立型模式又叫做靜態工廠方法模式,是由一個工廠物件決定創建出哪一種產品類的例項。

簡單工廠模式結構圖

這裡寫圖片描述

  • Factory:工廠類,簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類的建立產品類的方法可以被外界直接呼叫,建立所需的產品物件。
  • IProduct:抽象產品類,簡單工廠模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。
  • Product:具體產品類,是簡單工廠模式的建立目標。

2.簡單工廠模式簡單實現

這裡我們用生產電腦來舉例,假設有一個電腦的代工生產商,它目前已經可以代工生產聯想電腦了,隨著業務的拓展,這個代工生產商還要生產惠普和華碩的電腦,這樣我們就需要用一個單獨的類來專門生產電腦,這就用到了簡單工廠模式。下面我們來實現簡單工廠模式:

建立抽象產品類

我們建立一個電腦的抽象產品類,他有一個抽象方法用於啟動電腦:

public abstract class Computer {
    /**
     * 產品的抽象方法,由具體的產品類去實現
     */
    public abstract void start();
}

建立具體產品類

接著我們建立各個品牌的電腦,他們都繼承了他們的父類Computer ,並實現了父類的start方法:

聯想電腦:

public class LenovoComputer extends Computer{
    @Override
    public void
start() { System.out.println("聯想電腦啟動"); }

惠普電腦:

public class HpComputer extends Computer{
    @Override
    public void start() {
        System.out.println("惠普電腦啟動");
    }
}

華碩電腦:

public class AsusComputer extends Computer {
    @Override
    public void start() {
        System.out.println("華碩電腦啟動"
); } }

建立工廠類

接下來建立一個工廠類,它提供了一個靜態方法createComputer用來生產電腦。你只需要傳入你想生產的電腦的品牌,它就會例項化相應品牌的電腦物件:

public class ComputerFactory {
    public static Computer createComputer(String type){
        Computer mComputer=null;
        switch (type) {
            case "lenovo":
                mComputer=new LenovoComputer();
               break;
            case "hp":
                mComputer=new HpComputer();
                break;
            case "asus":
                mComputer=new AsusComputer();
                break;

        }
        return mComputer;
    }
}

客戶端呼叫工廠類

客戶端呼叫工廠類,傳入“hp”生產出惠普電腦並呼叫該電腦物件的start方法:

public class CreatComputer {
    public static void main(String[]args){
      ComputerFactory.createComputer("hp").start();
    }
}

3.使用簡單工廠模式的場景和優缺點

使用場景

  • 工廠類負責建立的物件比較少。
  • 客戶只知道傳入工廠類的引數,對於如何建立物件(邏輯)不關心。

簡單工廠模式優缺點

優點:

使使用者根據引數獲得對應的類例項,避免了直接例項化類,降低了耦合性。

缺點:

可例項化的型別在編譯期間已經被確定,如果增加新型別,則需要修改工廠,違背了開放封閉原則(ASD) 。 簡單工廠需要知道所有要生成的型別,當子類過多或者子類層次過多時不適合使用。

相關推薦

設計模式(一)-簡單工廠模式和策略模式

前言 最近開始和春哥,張鐸 ,銀平討論設計模式,成立了一個小菜變大鳥的小組,每天討論一個模式,並且把這個模式搞懂,每學一個新的模式,再回顧一下之前學的模式。這兩天學了簡單工廠模式和策略模式,發現兩個模式有很多相同之處,下面用商場促銷的例子來對兩個模式總結一下。 簡單工廠模式 1.

設計模式簡單工廠模式

spa 電腦 tco null 繼承 string 我們 實例 tro 相關文章 設計模式(一)設計六大原則 設計模式(二)單例模式的七種寫法 設計模式(三)建造者模式 1.簡單工廠模式簡單介紹 定義 簡單工廠模式屬於創建型模式又叫做靜

易學設計模式看書筆記(2) - 簡單工廠模式

原理 pub -m post 繼承 void cto tracking else if 本文摘自易學設計模式一書 一、簡單工廠模式 1.動物管理系統的樣例 public interface Animal{ public void eat(); } publi

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

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

設計模式(一)從“簡單工廠模式”升級為“工廠方法模式

工廠模式的引入是為了管理物件的構造,對使用者遮蔽構造過程,使用者只從工廠拿取新物件。 簡單工廠模式 用一個場景介紹簡單工廠模式:某工廠想包攬所有產品生產,不僅提供很多不同型別的產品(iPhone 5,6,7...),還時不時生產新型別的產品(三星S8),而且客戶不關係產品

設計模式練習(1)——簡單工廠模式

簡單工廠模式 一、題目: 使用簡單工廠模式模擬女媧(Nvwa)造人(Person),如果傳入引數M,則返回一個Man物件,如果傳入引數W。則返回一個物件Woman,用java語言實現該場景。現在需要

設計模式之六大原則 以及 簡單工廠模式

      作為一個合格的程式設計師所寫出來的程式是要具有靈活性的,就是寫的程式碼,要維護性高,複用性高,擴充套件性高。通過面向物件的特點(封裝,繼承,多型...)把程式的耦合度降低,使其達到高內聚,低耦合。那麼在有些時候使用適當的設計模式可以使得程式更加的靈活,易於修改,易

《大話設計模式》java實現之簡單工廠模式

《大話模式》這本書寫得不錯,可惜不是java版,現在有空,想著用java實現一下,寫到哪算哪 UML圖 程式碼結構圖 public class Client { public static void main(String[] args)

設計模式(Java語言)- 簡單工廠模式

  簡單工廠模式有稱為靜態工廠模式,屬於設計模式中的建立型模式。簡單工廠模式通過對外提供一個靜態方法來統一為類建立例項。簡單工廠模式的目的是實現類與類之間解耦,其次是客戶端不需要知道這個物件是如何被穿創建出來的,只需要呼叫簡單工廠模式的方法來統一建立就可以了,從而明確了各個類的職責。   一、建立簡單工廠模式

設計模式簡單工廠模式

相關文章 1.簡單工廠模式簡介 定義 簡單工廠模式屬於建立型模式又叫做靜態工廠方法模式,是由一個工廠物件決定創建出哪一種產品類的例項。 簡單工廠模式結構圖 Factory:工廠類,簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。

設計模式簡單工廠模式工廠方法模式

產生 for plm nbsp osc rbm play stp mage > 簡單工廠模式 顧名思義,此模式的設計結構是簡單的,核心是生產對象。 一般來說,運用工廠模式生產的對象應該是構建對象的過程比較復雜的,獲取構建對象的過程在日後可能發生變更的。 簡單工廠

設計模式簡單工廠模式

jsb 工廠模式 tle virt -m 虛函數 ios efault def 以面向對象的思想和簡單工廠模式。寫一個C++計算器程序,代碼例如以下: #include <iostream> using namespace std;

JS設計模式溫習簡單工廠模式工廠方法模式、抽象工廠模式概念

his mac script 開頭 str new 每一個 簡單工廠 pattern 註:空心箭頭表示的是種繼承關系,工廠類和產品類之間是一種依賴關系。是用箭頭加虛線表示的,以下的模型圖是用的實線是不正確(時間不夠用,在這裏我偷懶了。這個習慣不好,呵呵)簡單工廠模式(S

大戰設計模式4—— 簡單工廠模式

ref ins 復雜 nsa sta 對象比較 cto cnblogs 配置文件 簡單工廠模式(Simple Factory) 設計模式使用的例子 https://github.com/LinkinStars/DesignPatternsAllExample 一、

設計模式學習筆記簡單工廠模式

們的 設置 inpu ride args forname property 簡單 是不是 簡介:工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 在工廠模式中,我們在創建對象

設計模式簡單工廠模式 |工廠方法模式 |抽象工廠模式

簡單工廠模式 由三種角色組成: 1、工廠類角色:是簡單工廠模式的核心,含有一定的商業邏輯和判斷邏輯。 2、抽象產品角色:一般是具體產品繼承的父類或者實現的介面。 3、具體產品角色:工廠類所建立的物件就是此角色的例項。 用一個單獨的類來做這個創在例項的過程,這就

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

思想 簡單工廠模式,因為用於建立例項的方法是靜態的,又稱為靜態工廠方法模式。在該模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義一個類來負責建立其他類的例項,被建立的例項通常都具有相同的父類。 結構 組成(角色) 作用

JAVA設計模式1.簡單工廠模式

簡單工廠模式是建立型設計模式: 建立型設計模式即封裝了具體生成物件的細節,僅暴露出生成物件的方法。只需向建立物件的方法提供引數,而不用自行實現判斷的邏輯。 UML圖(圖片來自網路): 簡單工廠模式提供了一個建立者類,暴露了一個工廠方法,用於根據接收的引數返回對應的具

設計模式-簡單工廠模式

一、介紹 簡單工廠模式我們可以理解為負責生產物件的一個類,我們平常程式設計中,當時用"new"關鍵字建立一個物件時,此時該類就依賴與這個物件,也就是他們之間的耦合度高,當需求變化時,我們就不得不去修改此類的原始碼,此時我們可以運用面向物件(OO)的很重要的原則去解決這一問題,該原則就是——封

設計模式HeadFirst設計模式):工廠模式

     設計模式要求我們不應該針對實現程式設計,是為了降低耦合度,提高可維護性。當程式中出現“new”的時候,就證明程式在例項化一個具體類,所以用的是實現,而不是介面。如果程式碼綁著具體的類會導致程