设计模式-工厂模式-原理剖析
内容一:设计模式?
创建型模式->5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式->7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为型模式->11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模
内容二:工厂方法模式?
1、什么是工厂方法模式?(定义)
定义一个用于创建对象的统一的接口,然后由子类实现。
2、工厂方法模式->角色划分?
4个核心角色
角色一:抽象产品
角色二:具体产品
角色三:抽象工厂
角色四:具体工厂
3、工厂方法模式->原理案例?
工厂创建电脑->富士康工厂
华为工厂、三星工厂、苹果工厂、联想工厂…
如何知道你制造出来的产品是电脑?
因为:电脑标准规范(协议、接口)->特点
角色一:抽象产品->定义产品规范(规格)->电脑规范
角色二:具体产品->具体实现(具体制造目标)->具体电脑
具体电脑:华为电脑、三星电脑、苹果电脑…
角色三:抽象工厂->定义工厂规范和标准
角色四:具体工厂->华为工厂、三星工厂
定义角色?
角色一:抽象产品->ComputerProtocol
角色二:具体产品->SXComputer、HWComputer、MacComputer…
角色三:抽象工厂->ComputerFactoryProtocol
角色四:具体工厂->SXComputerFactory、HWComputerFactory…
来...上代码:
1.创建项目 ,选择macOS下的Command Line Tool来创建项目

2. 创建 ComputerProtocol这个接口:
角色一:抽象产品->定义产品规范(规格)->电脑规范
角色一:抽象产品->ComputerProtocol

3.创建具体的产品SXComputer、HWComputer、MacComputer…这个类继承NSObject
角色二:具体产品->具体实现(具体制造目标)->具体电脑
具体电脑:华为电脑、三星电脑、苹果电脑…
角色二:具体产品->SXComputer、HWComputer、MacComputer…
(1)创建SXComputer类
三星的电脑一定会具有 抽象产品(上边)的特点.
抽象产品是,具有是所有电脑的共同特点.

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

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

4.创建抽象工厂ComputerFactoryProtocol接口类
角色三:抽象工厂->定义工厂规范和标准
角色三:抽象工厂->ComputerFactoryProtocol
//电脑工厂说:我不知道是什么电脑,只需知道电脑标准就可以啦

5.创建SXComputerFactory三星工厂,和HWComputerFactory华为工厂
(1)创建SXComputerFactory类,三星工厂

三星电脑工厂引了"SXComputer.h"类
return返回的对象是三星电脑的类型特点.
ComputerProtocol是公共电脑的特点
SXComputer 实现了ComputerProtocol的方法.但是SXComputer具有他的电脑特点.

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


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

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

增送一张图,更好理解.

我们的面向协议,真是太屌啦!!!代码的可维护性,扩展性,代码大大提升✌️
有时间]我会整理一下百度地图,和高德地图里的代码,也是采用工厂设计模式.
嘻嘻,学习中的分享.加深学习🙏