iOS设计模式之简单工厂模式
简单工厂模式
基本理解
- 到底要实例化谁,将来会不会增加实例化的对象,比如计算器增加开根运算,这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂。
- 通过使用工厂模式,我们可以降低耦合度,做到对扩展开放,对修改封闭。如果需要再增加其他的方法,我们只需要重新构建一个子类即可。
例子
这里简单介绍一下。
比如我们要做一个计算器,我们会写几个运算类,比如加法、乘法、除法和减法。但是我们在使用这些运算类的时候,我们没有必要去在客户端每次用switch判断或者if判断。我们只需要传入运算符即可:
Operation oper;
oper = OperationFactory.createOperate("+");
oper.number1 = 1;
oper.number2 = 2;
double result = oper.getResult();
因此我们用到的OperationFactory就是一个工厂,它用来加工生成不同的运算。简单看一下OperationFactory里面都写了什么。
-(Operation *)createOperate:(NSString *)operate
{
Operation oper;
switch (operate) {
case [operate isEqualToString:@"+"]:
oper = [[OperationAdd alloc] init];
break;
case [operate isEqualToString:@"-"]:
oper = [[OperationSub alloc] init];
break;
case [operate isEqualToString:@"*"]:
oper = [[OperationMul alloc] init];
break;
case [operate isEqualToString:@"/"]:
oper = [[OperationDiv alloc] init];
break;
default:
break;
}
return oper;
}
这只是大概的代码。其中Operation是OPerationAdd、OperationSub等得父类,然后通过参数operate来生成不同的子类,然后再计算,这就是工厂模式。
iOS设计模式之简单工厂模式的更多相关文章
- iOS设计模式 - (3)简单工厂模式
iOS设计模式 - (3)简单工厂模式 by Colin丶 转载请注明出处: http://blog.csdn.net/hitwhylz/article/ ...
- iOS设计模式:简单工厂模式
1.简述 首先需要说明一下,简单工厂模式不属于23种GOF设计模式之一.它也称作静态工作方法模式,是工厂方法模式的特殊实现(也就是说工厂模式包含简单工厂模式).这里对简单工厂模式进行介绍,是为后面的工 ...
- 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 今天呢,要学习的设计模式是“简单工厂模式”,这是一个 ...
- 设计模式之简单工厂模式Simple Factory(四创建型)
工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...
- php实现设计模式之 简单工厂模式
作为对象的创建模式,用工厂方法代替new操作. 简单工厂模式是属于创建型模式,又叫做静态工厂方法模式,但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例. 工厂 ...
- [python实现设计模式]-3.简单工厂模式-触宝开放平台
预备知识: 开放封闭原则(Open-Closed Principle OCP) Software entities(classes,modules,functions etc) should open ...
随机推荐
- 使用unetbootin制作Debian安装U盘
有时需要在没有光驱的裸机上安装系统,这时我们可以使用unetbootin制作一个系统安装U盘. 1.在网上下载好vmlinuz,initrd.gz,boot.img.gz. 2.然后使用unetboo ...
- mysql中int、bigint、smallint 和 tinyint的区别详细介绍
1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方 11111111 在计算机中也就是 -128到127 1.BIT[M] 位字段类型,M表示每个值的位数,范围从1到64,如 ...
- [转] C#反射设置属性值和获取属性值
/// /// 获取类中的属性值 /// /// /// /// public string GetModelValue(string FieldName, object obj) { try { T ...
- MeshCombineUtility.cs method `GetTriangleStrip' of type `UnityEngine.Mesh' could be found
1) Assets/Standard Assets/Scripts/MeshCombineUtility.cs(27,74): error CS1061: Type `UnityEngine.Mesh ...
- 使用log4net
原文:<使用log4net,没有日志文件生成> Posted on 2014/06/12 ================================================= ...
- Xcode_cocoaPods-超详细傻瓜式安装教程
一.Ruby环境: 下载cocoaPods需要Ruby环境. 1. Mac os 10.5以后只带Ruby环境.为了确保万无一失还是查看一下吧. 打开终端 (1)ruby -v (2)更新tuby g ...
- Flask模板_学习笔记
代码尽在我的github上面:https://github.com/521xueweihan 概述: 在Flask中,Jinja2默认配置如下: A.扩展名为.html,.htm, ...
- 通过LINQ表达式树动态构建查询条件
第一种方法: public static class PredicateExtensions { public static Expression<Func<T, bool>> ...
- 在做excel导出时如何将excel直接写在输出流中
之前做excel导出时,我都是先将文件写在服务器上,然后再下载下来,后来发现原来可以直接将文件写在输出流里边. 下面是一个小demo: package com.huaqin.fcstrp.util; ...
- C#基础-css行内元素、块级元素基础
一.行内元素与块级元素 块级元素列表 <address> 定义地址 <caption> 定义表格标题 <dd> 定义列表中定义条目 <div> 定义文档 ...