设计模式-工厂模式-原理剖析

内容一:设计模式?

创建型模式->5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

结构型模式->7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式

行为型模式->11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模


内容二:工厂方法模式?

1、什么是工厂方法模式?(定义)

      定义一个用于创建对象的统一的接口,然后由子类实现。

2、工厂方法模式->角色划分?

        4个核心角色

        角色一:抽象产品

        角色二:具体产品

        角色三:抽象工厂

        角色四:具体工厂

3、工厂方法模式->原理案例?

           工厂创建电脑->富士康工厂

           华为工厂、三星工厂、苹果工厂、联想工厂…

           如何知道你制造出来的产品是电脑?

           因为:电脑标准规范(协议、接口)->特点

           角色一:抽象产品->定义产品规范(规格)->电脑规范

           角色二:具体产品->具体实现(具体制造目标)->具体电脑

           具体电脑:华为电脑、三星电脑、苹果电脑…

            角色三:抽象工厂->定义工厂规范和标准

            角色四:具体工厂->华为工厂、三星工厂


 定义角色?

角色一:抽象产品->ComputerProtocol

角色二:具体产品->SXComputer、HWComputer、MacComputer…

角色三:抽象工厂->ComputerFactoryProtocol

角色四:具体工厂->SXComputerFactory、HWComputerFactory…

来...上代码:

1.创建项目 ,选择macOS下的Command Line Tool来创建项目


设计模式-工厂模式-原理剖析_第1张图片

2. 创建 ComputerProtocol这个接口:

    角色一:抽象产品->定义产品规范(规格)->电脑规范

    角色一:抽象产品->ComputerProtocol


设计模式-工厂模式-原理剖析_第2张图片
抽象产品->ComputerProtocol


3.创建具体的产品SXComputer、HWComputer、MacComputer…这个类继承NSObject

    角色二:具体产品->具体实现(具体制造目标)->具体电脑

                      具体电脑:华为电脑、三星电脑、苹果电脑…

    角色二:具体产品->SXComputer、HWComputer、MacComputer…

(1)创建SXComputer类

    三星的电脑一定会具有 抽象产品(上边)的特点.

    抽象产品是,具有是所有电脑的共同特点.

设计模式-工厂模式-原理剖析_第3张图片

so :三星电脑要实现抽象产品具有的特点,实现抽象产品的方法

设计模式-工厂模式-原理剖析_第4张图片
实现接口方法


(2)创建HWComputer类 (同理SXComputer类)


设计模式-工厂模式-原理剖析_第5张图片


4.创建抽象工厂ComputerFactoryProtocol接口类 

    角色三:抽象工厂->定义工厂规范和标准

    角色三:抽象工厂->ComputerFactoryProtocol

    //电脑工厂说:我不知道是什么电脑,只需知道电脑标准就可以啦

设计模式-工厂模式-原理剖析_第6张图片

5.创建SXComputerFactory三星工厂,和HWComputerFactory华为工厂

(1)创建SXComputerFactory类,三星工厂


设计模式-工厂模式-原理剖析_第7张图片

三星电脑工厂引了"SXComputer.h"类

return返回的对象是三星电脑的类型特点.

ComputerProtocol是公共电脑的特点

SXComputer 实现了ComputerProtocol的方法.但是SXComputer具有他的电脑特点.

设计模式-工厂模式-原理剖析_第8张图片

(2)创建HWComputerFactory华为工厂(同理(1))


设计模式-工厂模式-原理剖析_第9张图片


设计模式-工厂模式-原理剖析_第10张图片

6.最后一步,在main类实现


设计模式-工厂模式-原理剖析_第11张图片

想实现HW电脑,直接替换一下对象就ok.省代码省力✌️

设计模式-工厂模式-原理剖析_第12张图片

增送一张图,更好理解.


设计模式-工厂模式-原理剖析_第13张图片

我们的面向协议,真是太屌啦!!!代码的可维护性,扩展性,代码大大提升✌️

有时间]我会整理一下百度地图,和高德地图里的代码,也是采用工厂设计模式.

嘻嘻,学习中的分享.加深学习

你可能感兴趣的:(设计模式-工厂模式-原理剖析)