android工廠模式,工廠設計模式(三種)詳解

 2023-12-25 阅读 47 评论 0

摘要:? 什么是工廠設計模式? 工廠設計模式,顧名思義,就是用來生產對象的,在java中,萬物皆對象,這些對象都需要創建,如果創建的時候直接new該對象,就會對該對象耦合嚴重,假如我們要更換對象,所有new對象的地

?

什么是工廠設計模式?

工廠設計模式,顧名思義,就是用來生產對象的,在java中,萬物皆對象,這些對象都需要創建,如果創建的時候直接new該對象,就會對該對象耦合嚴重,假如我們要更換對象,所有new對象的地方都需要修改一遍,這顯然違背了軟件設計的開閉原則,如果我們使用工廠來生產對象,我們就只和工廠打交道就可以了,徹底和對象解耦,如果要更換對象,直接在工廠里更換該對象即可,達到了與對象解耦的目的;所以說,工廠模式最大的優點就是:解耦

本篇主要介紹三種工廠設計模式的使用:
1、簡單工廠
2、工廠方法
3、抽象工廠

簡單工廠設計模式

定義:一個工廠方法,依據傳入的參數,生成對應的產品對象;
角色:
1、抽象產品
2、具體產品
3、具體工廠
4、產品使用者
使用說明:先將產品類抽象出來,比如,蘋果和梨都屬于水果,抽象出來一個水果類Fruit,蘋果和梨就是具體的產品類,然后創建一個水果工廠,分別用來創建蘋果和梨;代碼如下:

android工廠模式。水果接口

public interface Fruit {void whatIm();
}

具體類 蘋果

public class Apple implements Fruit {@Overridepublic void whatIm() {//蘋果}
}

具體類 梨

public class Pear implements Fruit {@Overridepublic void whatIm() {//梨}
}

具體工廠 水果工廠

public class FruitFactory {public Fruit createFruit(String type) {if (type.equals("apple")) {//生產蘋果return new Apple();} else if (type.equals("pear")) {//生產梨return new Pear();}return null;}
}

工廠方法模式和抽象工廠模式的區別。產品使用

 FruitFactory mFactory = new FruitFactory();Apple apple = (Apple) mFactory.createFruit("apple");//獲得蘋果Pear pear = (Pear) mFactory.createFruit("pear");//獲得梨

就這樣,一個非常簡單的工廠設計模式就完成了,但是有沒有發現什么問題呢?
對,那就是如果我想吃香蕉,想吃橘子呢,我萬一什么都想吃呢??所以,以上的這種方式,每當我想添加一種水果,就必然要修改工廠類,這顯然違反了開閉原則,亦不可取;所以簡單工廠只適合于產品對象較少,且產品固定的需求,對于產品變化無常的需求來說顯然不合適;所以我們來看下一種方式;

工廠方法設計模式

定義:將工廠提取成一個接口或抽象類,具體生產什么產品由子類決定;
角色:
抽象產品類
具體產品類
抽象工廠類
具體工廠類
使用說明:和上例中一樣,產品類抽象出來,這次我們把工廠類也抽象出來,生產什么樣的產品由子類來決定;
代碼如下:
水果接口 蘋果類和梨類 代碼和上例一樣

工廠接口

public interface FruitFactory {Fruit createFruit();//生產水果
}

java工廠模式例子、蘋果工廠

public class AppleFactory implements FruitFactory {@Overridepublic Fruit createFruit() {return new Apple();}
}

梨工廠

public class PearFactory implements FruitFactory {@Overridepublic Fruit createFruit() {return new Pear();}
}

使用

AppleFactory appleFactory = new AppleFactory();
PearFactory pearFactory = new PearFactory();
Apple apple = (Apple) appleFactory.createFruit();//獲得蘋果
Pear pear = (Pear) pearFactory.createFruit();//獲得梨

以上這種方式,雖然解耦了,也遵循了開閉原則,但是問題根本還是沒有解決啊,換湯沒換藥,如果我需要的產品很多的話,需要創建非常多的工廠,所以這種方式的缺點也很明顯;

抽象工廠設計模式

java中工廠模式是什么意思、定義:為創建一組相關或者是相互依賴的對象提供的一個接口,而不需要指定它們的具體類。
角色:和工廠方法一樣
抽象工廠和工廠方法的模式基本一樣,區別在于,工廠方法是生產一個具體的產品,而抽象工廠可以用來生產一組相同,有相對關系的產品;重點在于一組,一批,一系列;舉個例子,假如生產小米手機,小米手機有很多系列,小米note、紅米note等;假如小米note生產需要的配件有825的處理器,6英寸屏幕,而紅米只需要650的處理器和5寸的屏幕就可以了;用抽象工廠來實現:

cpu接口和實現類

public interface Cpu {void run();class Cpu650 implements Cpu {@Overridepublic void run() {//625 也厲害}}class Cpu825 implements Cpu {@Overridepublic void run() {//825 處理更強勁}}
}

屏幕接口和實現類

public interface Screen {void size();class Screen5 implements Screen {@Overridepublic void size() {//5寸}}class Screen6 implements Screen {@Overridepublic void size() {//6寸}}
}

工廠接口

public interface PhoneFactory {Cpu getCpu();//使用的cpuScreen getScreen();//使用的屏幕
}

工廠模式有哪幾種?具體工廠實現類:小米手機工廠

public class XiaoMiFactory implements PhoneFactory {@Overridepublic Cpu getCpu() {return new Cpu.Cpu825();//高性能處理器}@Overridepublic Screen getScreen() {return new Screen.Screen6();//6寸大屏}
}

具體工廠實現類:紅米手機工廠

public class HongMiFactory implements PhoneFactory {@Overridepublic Cpu getCpu() {return new Cpu.Cpu650();//高效處理器}@Overridepublic Screen getScreen() {return new Screen.Screen5();//小屏手機}
}

以上例子可以看出,抽象工廠可以解決一系列的產品生產的需求,對于大批量,多系列的產品,用抽象工廠可以更好的管理和擴展;

三種工廠方式總結:
1、對于簡單工廠和工廠方法來說,兩者的使用方式實際上是一樣的,如果對于產品的分類和名稱是確定的,數量是相對固定的,推薦使用簡單工廠模式;
2、抽象工廠用來解決相對復雜的問題,適用于一系列、大批量的對象生產;

工廠模式分為三種類型,轉載于:https://www.cnblogs.com/sunpengblog/p/10397986.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/196839.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息