美文网首页
设计模式

设计模式

作者: 开发者老岳 | 来源:发表于2018-02-27 19:55 被阅读6次

1. 简单工厂模式

https://my.oschina.net/leejan97/blog/311843

工厂方法模式和抽象工厂模式的区别:

  • 工厂方法模式: 也就是鼠标工厂是个父类,有生产鼠标这个接口。
    戴尔鼠标工厂,惠普鼠标工厂继承它,可以分别生产戴尔鼠标,惠普鼠标。
    生产哪种鼠标不再由参数决定,而是创建鼠标工厂时,由戴尔鼠标工厂创建。
    后续直接调用鼠标工厂.生产鼠标()即可 。

  • 再举个例子:
  • 布质风格ClothCanvesView和纸质风格PaperCanvesView继承于父类CanvesView

  • 生产风格的任务由CanvesViewGenerator类完成。ClothCanvesViewGeneratorPaperCanvesViewGenerator继承于CanvesViewGenerator

  • 控制器里面只会出现CanvesViewCanvesViewGenerator,隐藏了具体的实现,如果后面继续添加任务的话,只需再新建新的类就行,控制器的代码无需修改。

  • 抽象工厂模式: 也就是不仅生产鼠标,同时生产键盘。 也就是PC厂商是个父类,有生产鼠标、生产键盘两个接口。 戴尔工厂,惠普工厂继承它,可以分别生产戴尔鼠标+戴尔键盘,和惠普鼠标+惠普键盘。
    PC厂商里有个初始化方法,根据参数不同可以生成不同的工厂,如戴尔工厂或惠普工厂。
    创建工厂时,由戴尔工厂创建。 后续工厂.生产鼠标()则生产戴尔鼠标,工厂.生产键盘()则生产戴尔键盘。
  • 再举个例子:

    父类有个factory的方法,子类不用重写。该方法内容如下:
+ (BrandingFactory *)factory
{
#if defined(USE_ACME)
    return [[AcmeBrandingFactory alloc] init];
#else if defined(USE_SIERRA)
    return [[SierraSBrandingFactory alloc] init];
#else 
    return nil;
}

控制器里只需初始化BrandingFactory方法就行了。

  • 类簇就是抽象工厂模式,如NSNumber。
    在NSNumber中intValue和boolValue这种的方法,在具体工厂(NSCFNumber和NSCFBoolean)中重载以返回实际值(产品)。其他像numberWithBool:和numberWithInt:这样的工厂方法不是为了返回产品,而是返回能返回产品的工厂,因此它们不应该在具体工厂子类里重载。


相关文章

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • 浅谈JS的一些设计模式

    @(书籍阅读)[JavaScript, 设计模式] 常见设计模式 设计模式简介 设计模式概念解读 设计模式的发展与...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • JavaJavascript基础进阶(十七)JS中常用的设计模式

    单利设计模式、构造原型设计模式、发布订阅设计模式、promise设计模式 单利模式 构造原型设计模式 最贴近OOP...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 第1章 设计模式概述

    一、设计模式的概念 二、设计模式的历史 三、设计模式的要素 四、设计模式的分类 ■ 创建型设计模式 ■ 结构型设计...

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

网友评论

      本文标题:设计模式

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