美文网首页
设计模式-工厂模式-原理剖析

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

作者: 我静静仰望着天空 | 来源:发表于2018-08-24 15:16 被阅读162次

    内容一:设计模式?

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

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

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

    内容二:工厂方法模式?

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

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

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

            4个核心角色

            角色一:抽象产品

            角色二:具体产品

            角色三:抽象工厂

            角色四:具体工厂

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

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

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

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

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

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

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

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

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

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

     定义角色?

    角色一:抽象产品->ComputerProtocol

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

    角色三:抽象工厂->ComputerFactoryProtocol

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

    来...上代码:

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

    2. 创建 ComputerProtocol这个接口:

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

        角色一:抽象产品->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.省代码省力✌️

    增送一张图,更好理解.

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

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

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

    相关文章

      网友评论

          本文标题:设计模式-工厂模式-原理剖析

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