当对某个对象的实例化代码散布在整个项目中的时候,似乎你已经可以嗅到坏味道了,我们叫做“创建蔓延”。除非你肯定这个对象的实例化方法永远不会改变,否则最后将“创建的知识搬迁到Factory”中。

例如:书写日志的对象可能存在三个方法成员,分别用来向文件、数据库以及Windows日志写入信息。任何需要写入日志的地方都应该实例化这个对象,并调用其中的某个方法。


这样似乎看起来没有什么,但是存在以下潜在的问题:

(1)       客户代码(调用者)必须关心LogService是如何创建的

(2)       暴露了过多的方法成员,学习难度加大

(3)       LogService本身职责不单一

又例如,当某个对象的创建需要根据不同的配置选项来确定如何实例化时,一种可能是

将这些选项通过蛮力传递到对象的初始化方法中。造成过度的散布。对于使用者来说还需要关心使用哪个方法进行实例化。

在这种情况下,如果创建的选项太多,就应该使用Abstract Factory模式,以便将具体对象的创建延迟到子类或接口实现中实现。

工厂,它使用一个类封装了创建逻辑和客户代码的实例化。

使用的时候需要注意不要成为工厂痴迷者,仅在出现在文档中描述的创建蔓延和对象可能继续扩展的情况下考虑是用工厂方法。否则将造成代码复杂。

典型用法:


使用工厂方法的以后,客户代码的调用从原来的:

1LogService srv = new LogService();
2
3srv.WriteToDb();
4
5srv.WriteToFile();
6
7srv.WriteToWinLog();
8

更改为:

1LogFactory  f = new DBLogFactory();
2
3LogServiceBase srv = f.Create();
4
5srv.Write();
6

这样改进之后,虽然客户代码会多一行,但是带来的好处是显而易见的:

(1)       在扩充功能的时候,不需要改动原有的代码

(2)       封装了LogService具体对象的创建逻辑

(3)       封装了客户代码的实例化过程

(未完……)

转载于:https://www.cnblogs.com/DreamWinter/articles/691572.html

创建型模式——Factory Method(未完)相关推荐

  1. Factory Method(工厂方法)--对象创建型模式

    Factory Method(工厂方法)–对象创建型模式 一.意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method使一个类的实例化延迟到其子类. 二.动机 1.在软 ...

  2. 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式(转载)

    源地址:http://doc.chinaunix.net/python/200703/202210.shtml 本文详细介绍Python 设计模式系列之二: 创建型 Simple Factory 模式 ...

  3. 设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern。

    设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern. 文章目录 设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern. eg. 简单工厂模式. 结构. 优 ...

  4. 设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns)...

    设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns) 目录 · 概述 · Factory · What is the Fact ...

  5. 软件设计与体系结构——创建型模式

    如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔的个人空间 创建型模式: 创建型模式抽象了实例化过程 帮助系统独立于如何创建.组合和表示对象 一个类创建型模式使用继承改变被实例化的类 类创建型 ...

  6. 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.6 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

  7. 创建型模式:工厂方法

    前方高能:<一故事一设计模式>PDF 电子书已经上线,关注公众号即可获取. 个人博客原文 创建型模式:工厂方法 简介 姓名:工厂方法 英文名:Factory method Pattern ...

  8. Java设计模式之五大创建型模式

    Java设计模式之五大创建型模式 设计模式(23种) 单例模式(Singleton Pattern) 参考链接 概念 使用场景 实现思路 实现方式 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线 ...

  9. iOS开发 - 面向对象设计的设计模式(一):创建型模式(附 Demo UML类图)

    继上一篇的面向对象设计的设计原则,本篇是面向对象设计系列的第二个部分:面向对象设计的设计模式的第一篇文章. 另外,本篇博客的代码和类图都保存在我的GitHub库中:中的Chapter2. 最开始说一下 ...

最新文章

  1. IOS反汇编工具Hopper分析Crash Log
  2. 济南python工资一般多少钱-济南python开发培训机构哪个好
  3. 特性,物料特性,批次特性(转自SAPNow)
  4. 《树莓派Python编程入门与实战(第2版)》——3.4 关于Python解释器
  5. 那些年做的学术公益-你不是一个人在战斗
  6. ORACLE1.10 - 一对多
  7. 简单来说一下java中的泛型,ssh中dao层使用会简化代码量
  8. goahead php,Goahead移植教程 | 学步园
  9. php订阅系统,php redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)之基本使用
  10. AMD宣布裁员7% 约710员工将失去工作
  11. 15_python基础—文件操作
  12. 太香了!4999元就能入手iPhone 11 最高降价达900元
  13. 3-点的坐标及最远距离问题
  14. 两个员工,一个做事认真但效率低,一个迟到早退但效率高,只能留一个我该留哪个?
  15. nginx常用的请求过滤
  16. 【笔记】树莓派配置麦克风录音
  17. oppo r11s鸿蒙固件,OPPO R11s官方固件rom刷机包_OPPO R11s系统升级更新包下载
  18. 鸿蒙天钟小白图片,果然又一令人震惊的取名方式-“小白”
  19. 大脑--物质与意识之综合体,是物质有双重现象(物性与灵性)的实证
  20. 图 2021-01-16

热门文章

  1. 爬虫抓取页面数据原理(php爬虫框架有很多 )
  2. java基础Java主类结构 2
  3. Android获取设备状态栏status bar高度的正确姿势
  4. DNS隧道工具dns2tcp
  5. redis3.2安装过程分享
  6. php保存base64数据
  7. 最近对python颇有兴趣
  8. Asp.net Core Configuration
  9. 用链栈实现简易四则运算计算器(php版)
  10. Integer 和 int的种种比较