博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单工厂VS工厂方法
阅读量:5057 次
发布时间:2019-06-12

本文共 748 字,大约阅读时间需要 2 分钟。

前言:

  GOF经典的23种设计模式在IT界现已被广为流传。由于比较长时间没有用了,个人对于不同模式与模式之间的区别也渐渐模糊,故开始重温设计模式的思想。也希望更给对设计模式感兴趣的朋友些许的启发。

----------------------------------  

需求情境:

  设计一款具有基本计算功能的计算器。

-----------------------------------

初次看到这个需求,假如你从没有接触过设计模式,那么你应该很快可以把基本的逻辑语句用10行以内的代码搞定。

但是,现在我们将设计模式考虑进来,即注重代码的效率也考虑代码的可扩展性,让其尽量地满足面向对象的思想。本文主要对比一下简单工厂以及工厂方法在此情景需求下的实现方式。

一.简单工厂

概念:简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

图一:简单工厂模式的UML

二.工厂方法

概念:核心工厂类不再负责产品的创建,成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口。

图二:工厂方法模式的UML

通过对比我们可以发现:

1)简单工厂主要适合由工厂创造的“产品”(product)功能要求单一,而且区分界限明显【缺点:对工厂的方法开放‘修改’】

比如:计算器加减乘除运算仅返回一个result(),由‘+、-、*、/’进行自动区分;
2)工厂方法适合工厂制造的product具有多功能,标准化工厂接口,具体产品由实现该接口的子工厂实现【缺点:将具体产品的生产“判断”抛出到了客户端,而且增加额外的开发代码量】。

 

转载于:https://www.cnblogs.com/SeaSky0606/p/4713858.html

你可能感兴趣的文章
【贪心+DFS】D. Field expansion
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
IOS-每个程序员的编程之路上都应该看这11本书
查看>>
自定义tabbar(纯代码)
查看>>
小程序底部导航栏
查看>>
ibatis学习笔记
查看>>
18-ES6(1)
查看>>
poj1611 简单并查集
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
iOS 数组排序
查看>>
第三节
查看>>
PHP结合MYSQL记录结果分页呈现(比较实用)
查看>>