策略模式与简单工厂模式
1,简单工厂模式
a) 有一个抽象的接口用来表示工厂需要生产的产品共性;然后各个具体的产品类实现该抽象接口。
b) 工厂只需要持有产品的抽象接口,工厂接收一个 TYPE 参数来决定生产何种产品。
c) 对于客户而言,当他需要某种类型的产品时,只需要获得工厂对象,然后将产品的 TYPE参数传递给工厂,由工厂创建他所需要的产品。
2,策略模式
策略,本质上是一种算法。当客户需要处理某件事情时,由于所处的环境不同,他可以采取不同的方式(策略)去处理。因此,客户关注的是如何方便得获取所需的策略。
a) 有一个抽象的接口用来表示策略的框架,它定义了基本的处理算法。然后各个具体的策略实现该接口来扩充、实现相应的具体策略。
b) 有一个Context类来表示环境,Context拥有抽象的策略接口,它根据 TYPE参数来决定使用哪个策略。
c) 对于客户而言,当他需要使用某种策略时,肯定所处在某个Context上下文环境中,他传递一个TYPE参数给Context,由Context来负责使用何种策略。
3,简单工厂模式与策略模式的比较
①策略模式与简单工厂模式的结构图基本一致,因此,二者的使用模式基本一致。
②简单工厂模式的目的是创建对象,并使用所创建的对象去做事情(需要持有对象的引用);策略模式的目的是使用策略,即客户只关注我需要某种策略,你提供一个给我,我拿着该策略完成任务就行了(不需要持有策略的引用)。
③策略模式是定义一系列算法的方法,这些算法以不同的方式完成相同的工作,即算法的实现不同。策略模式让客户以统一的方式来调用不同的算法,将算法的使用者与算法解耦。
④简单工厂模式定义如何获得产品的方法,不同的产品具有不同的功能,简单工厂模式解决了客户如何有效地获取他所关心的产品。对客户而言,只需要持有一个工厂对象,给工厂一个产品的类型参数,让工厂负责生产相应的产品即可。然后,客户就拿着这个产品,进行方法调用,获得相关的产品的功能。
本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/p/4977896.html,如需转载请自行联系原作者
策略模式与简单工厂模式相关推荐
- 策略模式与简单工厂模式区别(转)
最近一直在抽时间研究设计模式,之前对设计模式也有一定的了解,但是都没有平心静气的去研究过,只是了解了一些皮毛,最近打算再深入研究一下,重新打开了设计模式的数据,对之前的疑问一个个的刨根问底,今天看了简 ...
- 大话设计模式-策略模式与简单工厂模式
来源:http://blog.csdn.net/wulingmin21/article/details/6712684 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策 ...
- java简单工厂模式_Java 简单工厂模式
Java 简单工厂模式 2014-05-28·WeaponX 3717 次浏览 ## 介绍 简单工厂模式又称静态工厂模式. 简单工厂模式由工厂类角色.抽象产品角色和具体产品角色组成. 工厂类角色是本模 ...
- 设计模式—工厂模式之简单工厂模式
1. 简单工厂模式简介 简单工厂模式(Simple Factory),又被称为"静态工厂方法模式".它属于"创建模式"(创建对象的模式),并且是"工厂 ...
- Java设计模式之(工厂模式)--简单工厂模式--工厂方法模式--抽象工厂模式
工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...
- 设计模式---3(工厂方法模式的概念,工厂方法模式的实现,工厂方法模式和简单工厂模式比较)
工厂方法模式 概念 工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 . 工厂方法模式的意义 定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中. 核心工厂类不再负责产品的创建,这样核 ...
- 工厂模式——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...
工厂模式在<Java与模式>中分为三类: 1)简单工厂模式(Simple Factory):不利于产生系列产品: 2)工厂方法模式(Factory Method):又称为多形性工厂: 3) ...
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...
转自:http://www.cnblogs.com/stonehat/archive/2012/04/16/2451891.html 设计模式系列--三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂 ...
- GOLANG工厂模式、简单工厂模式、抽象工厂模式、创建者模式
设计模式可以大大提高代码复用性,使得程序的修改更加灵活.另外将各个功能模块抽象解耦出来,在某个模块需要更改时不至于会对整体代码进行修改,解耦的好的话只简单修改几个地方即可以切换某个模块在实现上的切换, ...
- 设计模式——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
声明: 本博客参考C语言中文网:C语言中文网连接 主要记录学习以下内容: 一.简单工厂模式 二.工厂方法模式 三.抽象工厂模式 每个大要点都主要包括以下两部分内容: (1)基本概念和模型结构(包括一些 ...
最新文章
- Call to undefined function mysql_connect()
- 穹顶下业务流程管理失位
- linux oracle查看服务,技术|如何查看 Linux 中所有正在运行的服务
- springboot不返回指定的字段(隐藏字段)
- asus z170 asrock b150点位图 换换口味欣赏欣赏
- 智慧工地实名制劳务管理系统
- 嵌入式课程 之 陀螺仪传感器实验
- 六度分离_hdu_1869(floyd算法).java
- 边境的悍匪—机器学习实战:第一章 机器学习的基础知识
- arcgis 出图背景_ArcGIS入门教程来袭,零基础的同学快看过来!
- 远程开机并不难 用开机棒轻松打开局域网多台电脑
- 2020老年产业过去|现在|未来:疫情促进“线上化”,各分支加速融合创新
- 即使面对好莱坞,周星驰也可以五次[视而不见]
- 霓虹国推出“肌肉”机器人,疑似现实版“终结者”
- 验证码的生成及简单效果展示(Java篇)
- astra pro相机(乐视/奥比中光相机)在JETSON NANO、TX2、NX上的ubuntu18.04+ros环境中的驱动及使用
- cocos creator 微信小游戏接口
- Linux中su命令与sudo命令
- 成员信息 c语言,C语言工会成员信息管理系统.doc
- 详解Everest 命令行参数【转载】
热门文章
- Atitit 函数调用的原理与本质attilax总结 stdcall cdecl区别
- Atitit.研发团队与公司绩效管理的原理概论的attilax总结
- Atitit..状态机与词法分析 通用分词器 分词引擎的设计与实现 attilax总结
- Atitit. .net c# web 跟客户端winform 的ui控件结构比较
- paip.java OutOfMemoryError 解决方法o33
- paip.提升用户体验-------在C++ Builder 中为Form窗体添加背景图片
- Python+Wind:用 Pyautogui 轻松下载 Wind 数据
- Rust : WSL下编程
- 阮一峰:WebSocket 教程
- 刘逖:ETF市场迎来发展时机 可从产品创新等方面推动