設計模式-工廠模式

簡介

????工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。

在工廠模式中,我們在創(chuàng)建對象時不會對客戶端暴露創(chuàng)建邏輯,并且是通過使用一個共同的接口來指向新創(chuàng)建的對象。

意圖:定義一個創(chuàng)建對象的接口,讓其子類自己決定實例化哪一個工廠類,工廠模式使其創(chuàng)建過程延遲到子類進行。

主要解決:主要解決接口選擇的問題。

何時使用:我們明確地計劃不同條件下創(chuàng)建不同實例時。

如何解決:讓其子類實現(xiàn)工廠接口,返回的也是一個抽象的產(chǎn)品。

關鍵代碼:創(chuàng)建過程在其子類執(zhí)行。

實現(xiàn)

我們將創(chuàng)建一個?Animal?接口和實現(xiàn)?Animal?接口的實體類。下一步是定義工廠類?AnimalFactory。

FactoryPatternDemo,我們的演示類使用?AnimalFactory?來獲取?Aniaml?對象。它將向?AnimalFactory?傳遞信息(DOG / CAT / PIG),以便獲取它所需對象的類型。

步驟1

創(chuàng)建一個接口:

public interface Animal{

????void dc();

}

步驟2

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

public class Dog implements Animal{

? ? @override

? ? public void dc(){

? ? ? ? ? ? System.out.println("Dog");

????}

}

public class Cat implements Animal{

????@override

? ? public void dc(){

????????????System.out.println("Cat");

????}

}

public class Pig implements Animal{

????@override

? ? public void dc(){

????????System.out.println("Pig");

????}

}

步驟3

創(chuàng)建一個工廠,生成基于給定信息的實體類的對象。

public class?AnimalFactory{

? ? ? ? public Animal getDc(String animalType){

????????????if(animalType == null){ return null;

? ? ? ? ????}? ? ? ?

? ? ? ? ? ? if(animalType.equalsIgnoreCase("DOG")){? ? ? ??

?????????????????????return new Dog();

? ? ? ? ? ? } else if(animalType.equalsIgnoreCase("CAT")){? ? ? ??

?????????????????????return new Cat();

? ? ? ? ? ? } else if(animalType.equalsIgnoreCase("PIG")){? ? ? ??

?????????????????????return new Pig();

? ? ? ? ? ? }? ? ??

????????????return null;

????}

}

步驟4

使用該工廠,通過傳遞類型信息來獲取實體類的對象。

public class FactoryPatternDemo {

? public static void main(String[] args) {? ? ??

? ? ? ShapeFactory shapeFactory = new ShapeFactory();

? ? ? //獲取 Circle 的對象,并調(diào)用它的 dc 方法? ? ??

? ? ? Animal animal1 = shapeFactory.getDc("DOG");

? ? ? //調(diào)用 Dog 的 dc 方法? ? ??

? ? ? animal1.dc();

? ? ? //獲取 Cat 的對象,并調(diào)用它的 dc 方法? ? ??

? ? ? Animal animal2?= shapeFactory.getDc("CAT");

? ? ? //調(diào)用 Cat 的 dc 方法? ? ??

? ? ? animal2.dc();

? ? ? //獲取 Pig 的對象,并調(diào)用它的 dc 方法? ? ??

? ? ? Animal animal3?= shapeFactory.getDc("PIG");

? ? ? //調(diào)用 Pig 的 dc 方法? ? ??

? ? ? animal3.dc();

? }}

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 工廠模式 概述:工廠方法中抽象工廠負責定義創(chuàng)建對象的接口,具體對象的創(chuàng)建工作由繼承抽象工廠的具體類實現(xiàn)。 優(yōu)點:客...
    JerichoPH閱讀 216評論 0 0
  • 1、工廠模式 所謂工廠模式,就是作為一個工廠的類有一個對象以及與它關聯(lián)的多個方法,客戶端使用某些參數(shù)調(diào)用此方法,之...
    Wayne_Dream閱讀 225評論 0 0
  • 定義: 工廠模式是 Java 中最常用的設計模式之一。這種類型的設計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳...
    浪漫宇宙與人間日常閱讀 269評論 0 0
  • 工廠方法模式適合于對實現(xiàn)了同一接口或繼承了同一父類的一些類進行實例的創(chuàng)建。一般是通過定義一個工廠類,并在其方法中實...
    時待吾閱讀 186評論 0 0
  • 工廠模式是我們?nèi)粘i_發(fā)中經(jīng)常使用的設計模式。當我們需要創(chuàng)建一些比較負責的對象的時候,為了將對象的初始化部分進行隔離...
    MrKing5946閱讀 397評論 0 0

友情鏈接更多精彩內(nèi)容