当前位置: 首页 > 编程日记 > 正文

大话设计模式之简单的工厂模式

第一章:代码无错就是优-简单的工厂模式

先建立一个计算类Operation

Operation.h文件

@interface Operation : NSObject@property(nonatomic,assign)double numberA;@property(nonatomic,assign)double numberB;@end

Operation.m文件

@implementation Operation@end

然后分别创建他们的子类Add,Sub,Mul,Div

Add.h

#import "Operation.h"@interface Add : Operation-(double)OperationAdd;@end

Add.m

#import "Add.h"@implementation Add-(double)OperationAdd{return self.numberA+self.numberB;}
@end

Sub.h

#import "Operation.h"@interface Sub : Operation
-(double)operaSub;
@end

Sub.m

#import "Sub.h"@implementation Sub
- (double)operaSub{return self.numberA-self.numberB;
}
@end

Mul.h

#import "Operation.h"@interface Mul : Operation
-(double)OperaMul;
@end

Mul.m

#import "Mul.h"@implementation Mul
-(double)OperaMul{return self.numberA*self.numberB;
}
@end

Div.h

#import "Operation.h"@interface Div : Operation
-(double)OperaDiv;
@end

Div.m

#import "Div.h"@implementation Div
-(double)OperaDiv{
//    double result=0.0;if (self.numberB==0) {NSLog(@"除数不能为0");}return self.numberA/self.numberB;
}
@end

计算的工厂类OperationFactory.h

#import <Foundation/Foundation.h>

#import "Add.h"

#import "Sub.h"

#import "Mul.h"

#import "Div.h"

@interface OperationFactory : NSObject

-(Operation *)createOperate:(char)opreate;

@end

OperationFactory.m

#import "OperationFactory.h"@implementation OperationFactory
-(Operation *)createOperate:(char)opreate{Operation *oper;switch (opreate) {case '+':oper=[[Add alloc]init];break;case '-':oper=[[Sub alloc]init];break;case '*':oper=[[Mul alloc]init];break;case '/':oper=[[Div alloc]init];break;}return oper;
}
@end

主函数

#import <Foundation/Foundation.h>
#import "OperationFactory.h"
int main(int argc, const char * argv[]) {@autoreleasepool {OperationFactory *factory=[[OperationFactory alloc]init];Operation *oper=[factory createOperate:'+'];oper.numberA=100;oper.numberB=200;NSLog(@"%f",[oper opera]);}return 0;
}

转载于:https://www.cnblogs.com/qianLL/p/5230323.html

相关文章:

Nginx学习3:反向代理实例

Nginx配置实例-反向代理1 目标 打开浏览器&#xff0c;在浏览器地址栏输入地址 www.123.com&#xff0c;跳转到 liunx 系统 tomcat 主页面中 准备工作 我们在官网下载好tomcat之后&#xff0c;直接将tomcat的压缩包放到相应的目录下编译解压&#xff0c;然后进入tomcat的bi…

2022-2028年中国钢铁智能制造产业竞争现状及发展趋势分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢铁智能制造行业市场行业相关概述、中国钢铁智能制造行业市场行业运行环境、分析了中国钢…

exchange 2010 search mailbox 的幕后强大功能

铃……….半夜中被一阵急促的手机铃声吵醒&#xff0c;年度服务客户打来电话需要进行邮件的排查和删除工作。问其原因&#xff0c;原来是组织中有人发了一封关于领导的不健康的邮件&#xff0c;并在企业内部进行了转发&#xff0c;领导要求立即找出此类邮件并进行删除。管理员深…

无人机官网介绍

参考官网&#xff1a;http://dev.px4.io/master/en/index.html 程序在运行期间可以通过在shell端输入执行top指令查看哪些模块正在被执行&#xff0c;当运行模块时可以通过输入<moudles name> start/stop来实现模块的使用与停止。 PX4软件架构&#xff1a; 更新速率&am…

Unity从头开始开发增强现实(AR)游戏学习教程

使用Unity 2021构建增强现实飞镖游戏 学习从头开始开发增强现实(AR)游戏&#xff0c;使用AR基金会&#xff0c;货币化&#xff0c;发布游戏玩商店 Build a Augmented Reality Dartboard Game with Unity 2021 你会学到什么 使用Unity2021从头开始学习增强现实。 构建一个AR飞镖…

IDEA的CPU占用率高问题解决方法

前言&#xff1a;这段时间发现 IDEA 的 CPU 占用率猛涨&#xff0c;时不时就飙升到百分之7、80&#xff0c;使得敲代码的体验感十分不佳&#xff0c;在经过一番查找之后终于解决了问题&#xff0c;在此记录一下 IDEA的CPU占用率高问题解决方法 问题定位 我们先定位一下为什么I…

消息队列之库存扣减

转载于:https://www.cnblogs.com/work-at-home-helloworld/p/5230894.html

2022-2028年中国钢铁冶炼行业市场研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢铁冶炼行业市场行业相关概述、中国钢铁冶炼行业市场行业运行环境、分析了中国钢铁冶炼行…

Microsoft Build 2015

没本事去旧金山&#xff0c;只能默默的守在笔记本前看了…… 首先Azure在全球有19个数据中心了&#xff0c;终于超过亚马逊了&#xff0c;好样的&#xff01;过去12个月Azure有超过500个新功能上线&#xff0c;每月用户增长9万。Azure将会越来越成熟了&#xff0c;只可惜我现在…

开源飞控PX4简介

介绍&#xff1a; https://docs.px4.io/master/zh/flight_controller/pixhawk4.html无人机飞控基本装配参考&#xff1a; https://docs.px4.io/master/zh/assembly/下载地面站链接&#xff08;QGC地面站&#xff09;&#xff1a; http://qgroundcontrol.com/downloads/

Unity视觉效果图初学教程 Unity Visual Effects Graph for Beginners

面向初学者的Unity视觉效果图介绍 你会学到: 学生将学习使用视觉效果图来创建效果 MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;44.1 KHz&#xff0c;2 Ch 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; |时长:39节课(4h 42m…

nonatomic, retain,weak,strong用法详解

strong weak strong与weak是由ARC新引入的对象变量属性ARC引入了新的对象的新生命周期限定&#xff0c;即零弱引用。如果零弱引用指向的对象被deallocated的话&#xff0c;零弱引用的对象会被自动设置为nil。property(strong) MyClass *myObject;相当于property(retain) MyClas…

“ Error:(1, 1) java: 非法字符: ‘\ufeff‘ ”错误的解决方法

前言&#xff1a;今天为了做作业&#xff0c;在 github 上面下载了个项目&#xff0c;然后在运行项目时发现报错&#xff0c;在此记录一下 “ Error:(1, 1) java: 非法字符: ‘\ufeff’ ”错误的解决方法 发生原因 这个项目从目录的结构可以很明显地看出是使用 Eclipse 开发的…

2022-2028年中国钢铁电商产业竞争现状及发展前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢铁电商行业市场行业相关概述、中国钢铁电商行业市场行业运行环境、分析了中国钢铁电商行…

java开发webservice的几种方式

为什么80%的码农都做不了架构师&#xff1f;>>> webservice的应用已经越来越广泛了&#xff0c;下面介绍几种在Java体系中开发webservice的方式&#xff0c;相当于做个记录。 1.Axis2 Axis是apache下一个开源的webservice开发组件&#xff0c;出现的算是比较早了&a…

改变gazebo背景颜色

修改这里:

【Unity教程】创建一个完整的驾驶游戏

专业游戏设计 你会学到什么 在unity HDRP创建一个完整的驾驶游戏 定制不同类型的汽车 将人工智能汽车和人工智能航路点系统添加到你的赛道上 添加汽车展厅菜单以解锁和购买新车 在Blender中设计自己的赛道 易于理解的编码使游戏工作 流派:电子学习| MP4 |视频:h264&#xff0c…

哈夫曼编译码器

前言&#xff1a;又到了学校一年一度的数据结构课设的日子&#xff0c;经不住学弟学妹热心地“询问”我数据结构课设的内容&#xff0c;我就在这里把我之前数据结构课设做的东西总结一下 哈夫曼编译码器 我课设选择的题目是哈夫曼编译码器&#xff0c;类似于我们平时用的解压缩…

Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)

题意&#xff1a; 线段树做法 分析&#xff1a; 因为每次都是在当前位置的前缀区间查询最大值&#xff0c;所以可以直接用树状数组优化。比线段树快了12ms~ 代码&#xff1a; #include<cstdio> #include<cmath> #include<iostream> #include<algorithm>…

2022-2028年中国钢筘行业市场研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢筘行业市场行业相关概述、中国钢筘行业市场行业运行环境、分析了中国钢筘行业市场行业的…

控制台绘制正切曲线

前面介绍了&#xff1a;控制台绘制正弦/余弦曲线 , 控制台绘制正弦曲线和余弦曲线同时显示 下面来看看正切曲线吧&#xff0c;其实也都差不多…… #include <stdio.h> #include <math.h>int main() {double y;int x,k;for(y10;y>-10;y--){katan(y)*7;if(k>0)…

PX4多机ros仿真报错

出现报错&#xff1a; 缺少配置文件&#xff0c;需要添加路径到文件中&#xff1b; 在根目录下打开终端输入&#xff1a; 出现下面一个界面&#xff1a;&#xff08;蓝色是我添加的&#xff09; 保存退出&#xff1b; 重新进行刚开始的操作&#xff1a; 使用默认的.launc…

Unity创建2D动作RPG游戏 Create Action 2D RPG Game in Unity

在Unity中创建动作2D RPG游戏 大小解压后&#xff1a;5.69G 时长10h 包含 Udemy Game Asset.unitypackage 源文件 1280X720 MP4 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 你会学到什么 学习基础来提升C#&#xff0c; 为远程和特殊攻击…

Nginx学习4:负载均衡实例

Nginx配置实例-负载均衡 目标 在浏览器地址栏输入地址 http://192.168.126.131:8080/edu/a.html&#xff0c;负载均衡效果&#xff0c;平均分配到 8080 和 8081 端口中 准备工作 &#xff08;1&#xff09;准备两台 tomcat 服务器&#xff0c;一台 8080&#xff0c;一台 80…

2016030204 - git和github结合

1.下载和安装git客户端 参考&#xff1a;http://www.cnblogs.com/zhtzyh2012/p/5232291.html 2.github上创建项目 参考&#xff1a;http://www.cnblogs.com/zhtzyh2012/p/5233495.html 3.密钥相关信息设置 参考&#xff1a;http://www.cnblogs.com/zhtzyh2012/p/5233630.html 4…

2022-2028年中国钢化玻璃行业市场研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国钢化玻璃行业市场行业相关概述、中国钢化玻璃行业市场行业运行环境、分析了中国钢化玻璃行…

nginx如何解决超长请求串

nginx是一个强大的http服务器&#xff0c;但是在使用过程中发现&#xff0c;当遇到超长的post请求或者get请求时&#xff0c;nginx会返回413、400、414等状态码&#xff0c;这是因为请求串长度超过了nginx默认的缓存大小或者请求串大小&#xff0c;那么我们需要怎么样来解决这些…

ubuntu安装qwt出现错误时"mkdir: 无法创建目录“/usr/local/qwt-6.1.3“: 权限不够"

报错&#xff1a; 在root用户下执行操作&#xff0c;参考链接安装qwt

Unity 2021人工智能导论 Introduction to Artificial Intelligence in Unity 2021

学习视频游戏开发中最常用的人工智能技术的基础知识。 你会学到什么 了解如何使用有限状态机 学习行为树的基础知识 了解如何实现阿斯塔寻路算法 了解如何在游戏中实现传感器 了解如何创建GOAP系统 了解植绒的基本知识 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频…

HikariPool 连接池问题

前言&#xff1a;今天在一个项目运行的时候发现一个很奇怪的问题&#xff0c;当我有一段时间无操作之后再进行插入操作的话&#xff0c;就会出现HikariPool相关的报错&#xff0c;在此记录一下 问题 2022-02-20 13:14:04.178 WARN 4012 --- [nio-8888-exec-6] com.zaxxer.hik…