《大话设计模式》num01---简单工厂模式
2017年12月10日 20:13:57 独行侠的守望 阅读数:128更多
个人分类: 设计模式
编辑
版权声明:本文为博主原创文章,转载请注明文章链接。 https://blog.csdn.net/xiaoanzi123/article/details/78766827
之前看过本书几个设计模式了已经,也写了代码进行练习,今日蓦然发现好生疏,忘得也差不多了,就想着再回顾下,顺便在博客中稍微记录下要点 或者心得。希望坚持下去,弄成一个知识点系列吧,以后回顾可以直接翻看自己的博客,也挺好。
话不多说,从第一个,简单工厂模式开始。【之所以叫简单,说明没有完全做到 设计模式的要求】
前言:活字印刷术,面向对象思想 复用 维护 扩展 灵活 高内聚低耦合
以 实现 一个计算器 为例:
1、创建 抽象类count, 这是一个计算类,有一个计算方法calculate
public abstract class Count {
public abstract double calculate(double num1, double num2) throws Exception;
}
2、创建具体的计算类【加减乘除等等】,分别继承抽象计算类count,重写各自独有的计算方法。
比如加法类:
public class Plus extends Count{
@Override
public double calculate(double num1, double num2) {
return num1 + num2;
}
}
3、创建工厂类,根据用户传来的不同运算符,生成不同的计算类对象。【计算类对象由工厂生成,而不是用户手动去new创建】
public class Factory {
public static Count createObj(String oper){
Count count = null;
switch(oper){
case "+":
count = new Plus();
break;
case "-":
count = new Subtract();
break;
case "*":
count = new Ride();
break;
case "/":
count = new Divide();
break;
case "%":
count = new Remainder();
break;
default:
System.out.println("����������");
break;
}
return count;
}
}
4、测试类中main()进行验证 。
Factory factory = new Factory(); //创建工厂
Count createObj = factory.createObj(oper); //oper 操作运算符 + - * .......
double calculate = createObj.calculate(d1, d2);
顺便整理一下体积的关于UML类图的一些知识:有点乱但是很全面系统,注意把红笔标记 和 图中 的关键字联系起来就很好理解。
=================20190414 添加 ,图片截图来自网络
《大话设计模式》num01---简单工厂模式的更多相关文章
- 《大话设计模式》——简单工厂模式(Python版)
简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 例: 使用Python设计一个控制台计算器,要求输入两个数 ...
- C#设计模式(2)-简单工厂模式
引言 上一遍中介绍了设计模式中的单例模式-C#设计模式(1)-单例模式,本篇将介绍简单工厂模式,也是比较容易理解的一种模式: 简单工厂模式简介 什么是简单工厂模式? 定义一个工厂类,它可以根据参数的不 ...
- C#设计模式(2)——简单工厂模式(转)
C#设计模式(2)——简单工厂模式 一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理 ...
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数 ...
- 设计模式之简单工厂模式(Simple Factory)
原文地址:http://www.cnblogs.com/BeyondAnyTime/archive/2012/07/06/2579100.html 今天呢,要学习的设计模式是“简单工厂模式”,这是一个 ...
- iOS设计模式 - (3)简单工厂模式
iOS设计模式 - (3)简单工厂模式 by Colin丶 转载请注明出处: http://blog.csdn.net/hitwhylz/article/ ...
- 大话设计模式C++版——工厂模式在COM中的典型应用
上篇<大话设计模式C++版——抽象工厂模式>中,我们拯救世界未遂,留下小小的遗憾,本篇中我们将给出一个解决方案——COM组件技术,同时也顺便扯扯工厂模式在COM组件技术中的应用. 工厂模式 ...
- C++实现设计模式之 — 简单工厂模式
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4251756.html 所谓简单工厂模式,是一种实例化对象的方式,只要输入需要实例化对象的名字 ...
- C#设计模式之简单工厂模式
简单工厂模式解释: 简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern) 是通过专门定义一 ...
- 设计模式之简单工厂模式Simple Factory(四创建型)
工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...
随机推荐
- LoadRunner 12 模拟 RSA加密 登录的实现(JS)
LR 12 中 web_js_run API 非常坑,只能调用一个 JS 文件:更坑的是,不能通用 一个JS调用另外一个JS:(可能有,但在网上找了N个国家,都没有找到!如有,还请朋友告之,谢谢.) ...
- require用法及源码解析
一.require()的基本用法 require语句内部逻辑: 当 Node 遇到 require(X) 时,按下面的顺序处理. (1)如果 X 是内置模块(比如 require('http')) ...
- ubuntu server usb安装盘制作问题
本来服务器上装的是windows server 2003,开多个虚拟机装linux来用,但发现不管是vmware还是virtualbox,总是有内存泄漏,大约2个星期左右16G内存就全没了,任务管理器 ...
- javascript 操作符小结
简单总结一下JavaScript的几个操作符: var. in. delete. typeof. new. instanceof.void var 定义变量要使用var操作符, 使用var操作符定义的 ...
- win7 失去焦点解决方案
将HKEY_CURRENT_USER\Control Panel\Desktop中的ForegroundLockTimeout的选项,改成十进制的200000毫秒或者十六进制30d40. 参考链接: ...
- Sharepoint2013商务智能学习笔记之Excel Service展示Sql Server数据Demo(五)
第一步,打开Excel新建空白工作簿 第二步,使用Excel连接sql 数据库 第三步,画图 第四步 添加筛选器 最后效果如下: 第五步,将Excel上传到sharepoint任意文档库,并直接点击 ...
- 利用MVC的Area作为二级域名
此处使用的域名是我改了系统的hosts文件达到的 测试成功! 全局的注册方式 在Area的注册文件里进行配置 一个Area和一个外部的Controller 废话不多说,提供DEMO 下载地址
- 业务、数据记录——ThreadPool.QueueUserWorkItem及Redis的实现
业务描述 当用户执行完业务操作,或者数据操作后,讲业务记录/数据追踪插入到Redis中.ThreadPool.QueueUserWorkItem定时检查队列并将上述数据插入到数据库中持久化. 实现流程 ...
- 令牌Token和会话Session原理与攻略
本篇文章将从无到完整的登录框架或API详细讲述登录令牌原理.攻略等安全点. 有些协议或框架也喜欢把令牌叫票据(Ticket),不论是APP还是Web浏览器,很多框架或协议都用到了本文所说的这套类似的认 ...
- [CentOS7] minimal安装后 出现 没有ifconfig 无法ping 无法yum could not retrieve mirrorlist http://mirrorlist.centos.org/
刚以minimal方式安装完CentOS,打算看下ip,结果ifconfig没找到(后来得知可以用ip addr查看本机ip) 于是yum grouplist, 结果出现could not retri ...