美文网首页
设计模式-创建型-工厂方法模式 水果专卖店?

设计模式-创建型-工厂方法模式 水果专卖店?

作者: wuzhuoyu | 来源:发表于2022-04-16 23:18 被阅读0次
设计模式-创建型-工厂方法模式.png

前言

工厂模式介绍

一般情况下,我们会把工厂模式分为三种变体,1. 简单工厂 2. 工厂方法 3. 抽象工厂,平常开发过程中使用最多的一般是前面两种方式,相对于抽象工厂而言原理要简单一些。

⚠️ 重点:工厂模式的核心便是关于封装对象的创建

目录

设计模式-创建型-简单工厂模式

设计模式-创建型-工厂方法模式

设计模式-创建型-抽象工厂模式

简介

定义

工厂方法模式( Factory Method Pattern)隶属于创建型,原理主要是工厂父类主要负责定义产品创建的公共接口,而工厂子类主要负责生产具体的产品。

特点

工厂类用来创造具体的产品,外部无需知道产品的创造细节,只需要向工厂索要产品。产品的创造由工厂自行决定,所以工厂只做与之相关的产品创建,进而也方便的系统的扩展。但由于新建产品需要添加新的工厂,所以系统的抽象性和复杂度也随之而来。

理解实现

现实模型

大家都知道我喜欢吃水果,也经常在老乡哪里买水果,所以老乡是越来越富有了😭,开起了水果专卖店还请了一批美女销售员。但是我不仇富,还是经常会买一些🍍、🥭、🍇、🥝、🍉,一开始我都是在一个水果店买老乡的水果,现在我要找各个专卖店的美女买水果了。还是下班前买,吃完它们后开始写水文了。

分析模型

主线:我去老乡的专卖店买水果,美女销售员给我,吃完写水文。

模型1: 我 -> 消费者

模型2: 水果店专卖店 ->具体产品工厂

模型3: 美女销售员 -> 创建产品

模型4: 水果们 -> 产品

我(消费者[shuaige])

一周七天,周一到周五上班摸鱼比较费脑子,又不敢提桶,只能买水果补补,不然怎么卷的过各位大佬。

class Me:ShuaiGe{
    fun eatFruit(){
        (1..7).forEach{
            when(it){
                1->PineappleFruitStore().createFtuit()
        2->MangoFruitStore().createFtuit()
        3->GrapeFruitStore().createFtuit()
        4->KiwiFruitStore().createFtuit()
        5->WatermelonFruitStore().createFtuit()
        else-> println("周末没赚钱不准吃水果")
            }
        }
    }

老乡的水果专卖店(具体产品工厂)

老乡还是非常体谅我上班辛苦,对我的要求都是有求必应的,知道我家境清寒,还有心提醒我周末没有赚钱。

class PineappleFruitStore:FruitStore(){
    override fun createFtuit():Fruit=Pineapple()
}

class MangoFruitStore:FruitStore(){
    override fun createFtuit():Fruit = Mango()
}

class GrapeFruitStore:FruitStore(){
    override fun createFtuit():Fruit = Grape()
}

class KiwiFruitStore:FruitStore(){
    override fun createFtuit():Fruit = Kiwi()
}

class WatermelonFruitStore:FruitStore(){
    override fun createFtuit():Fruit = Watermelon()
}

美女销售员(创造产品)

interface FruitStore{
    fun createFtuit():Fruit
}

水果们(产品)

这些就是本帅喜欢的水果了,也就吃的起这些便宜的水果。


class Pineapple:Fruit(){}

class Mango:Fruit(){}

class Grape:Fruit(){}

class Kiwi:Fruit(){}

class Watermelon:Fruit(){}

使用实例

以网络响应解析器功能来说,系统网络请求有多种传输协议规则,有json,xml,yaml,自然我们只需要提供一个解析方法,根据不同的传输协议创建不同的解析器。

抽象协议解析工厂

interface IProtocolParserFactory {
    fun createProtocolParser():IProtocolParser
}

JSON解析器工厂

class JsonProtocolParserFactory : IProtocolParserFactory {
  override fun createProtocolParser():IProtocolParser {
    return JsonProtocolParser();
  }
}

XML解析器工厂

class XmlProtocolParserFactory : IProtocolParserFactory {
  override fun createProtocolParser():IProtocolParser {
    return XmlProtocolParser();
  }
}

YAML解析器工厂

class YamlProtocolParserFactory : IProtocolParserFactory {
  override fun createProtocolParser():IProtocolParser {
    return YamlProtocolParser();
  }
}

适用环境

如果无法预知对象确切类别及其依赖关系时可使用工厂方法

相关文章

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • Kotlin(八)kotlin设计模式-创建型

    创建型模式 - 工厂 Kotlin里面几种主流创建型设计模式:工厂方法模式,抽象工厂模式,构建者模式 8.1 伴生...

  • spring 设计模式篇(前)

    设计模式俗称:套路 一、spring常见设计模式 (23种设计模式) 创建型:工厂方法模式、抽象工厂模式、建造者...

  • 设计模式、第一篇

    常用设计模式 设计模式分类 1.创建型 工厂方法模式(Factory Method)、抽象工厂模式(Abstrac...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

  • 简单工厂模式

    工厂方法模式(Factory Pattern)是创建型设计模式之一。 一、定义 简单工厂模式又称为静态方法工厂模式...

  • 工厂方法模式

    什么是工厂方法模式 工厂方法模式又称为工厂模式,属于创建型设计模式。工厂方法模式定义了一个创建对象的接口,但由子类...

  • 「每天一个知识点」精讲设计模式面试专题

    前言: 设计模式的分类 设计模式分为三类 创建型设计模式与对象创建有关包括单例模式,工厂方法模式,抽象工厂模式,建...

  • 设计模式

    23种设计模式 工厂方法(创建型:解决对象创建问题的) 工厂方法:工厂模式不属于GOF设计模式,也不属于JavaE...

  • 设计模式[2]-工厂方法模式-Factory Method Pa

    1. 工厂方法模式简介 工厂方法模式(Factory Method Pattern)是创建型的设计模式,和简单工厂...

网友评论

      本文标题:设计模式-创建型-工厂方法模式 水果专卖店?

      本文链接:https://www.haomeiwen.com/subject/mfdkertx.html