
设计模式
文章平均质量分 87
想名真难
这个作者很懒,什么都没留下…
展开
-
iOS分层架构设计
iOS的应用一般情况下,无非就是用户与界面间交互,形成操作指令,然后对数据进行增删改查, 发起网络请求。当业务过于复杂时,我们就可以采用分层架构设计。这样可以最大程度上解耦,这里,我们主要介绍最经典的三层架构设计模型。大体上,分别为:应用层、服务层、数据层。也有分4层的,把数据层在拆分为数据持久层和信息系统层.Tips: 我们常用的MVC、MVP、MVVM等都是属于应用层内的架构,也就是说,它们主要是为应用层解耦等。而本文提到的分层架构是针对整个项目而言。而架构设计是宏观的、全面的将设计组织起来原创 2021-08-29 20:23:18 · 1502 阅读 · 0 评论 -
UML类图
UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。本文着重介绍类图,其他的看https://blog.youkuaiyun.com/u014600626/article/details/106333653 类图(Class Diagrams): 用户根据用例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图。在UML类图.转载 2020-05-25 15:12:15 · 263 阅读 · 0 评论 -
其他场景的UML图
UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。着重介绍类图,其他的看想要知道UML更多内容的朋友,可以点击以下课程学习相关知识: https://edu.youkuaiyun.com/course/play/24752/280547一、基本概念 如下图所示,UML图分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动转载 2020-05-25 15:07:33 · 500 阅读 · 0 评论 -
iOS 迭代器模式
这个其实很常用的,就是遍历集合类,数组,字典都有枚举器遍历的方法,其实就是cocoa实现的迭代器模式 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。 当你需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,就应该考虑使用迭代器模式。另外,当需要对聚集有多种方式遍历时,可以考虑去原创 2016-08-08 21:26:50 · 344 阅读 · 0 评论 -
iOS 组合模式
组合模式的定义为:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。”在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面。例子1:就是多级树形菜单。例子2:文件和文件夹目录1.组合模式的例子组合模式结构图:典原创 2016-08-09 15:45:40 · 490 阅读 · 0 评论 -
iOS 模板模式
这个其实一直在用,比如我们重写viewDidLoad,viewDidAppear,这些就是运用了模板模式。利用系统定义的算法,加入自己实现的部分。1. 概述 定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。2. 模式中的角色 2.1 抽象类(AbstractClass):实现了模板方法,原创 2016-08-09 22:27:34 · 314 阅读 · 0 评论 -
中介者模式
其实MVC中controller 就是一个广义的中介者。 在我们的生活中处处充斥着“中介者”,比如你租房、买房、出国留学、找工作、旅游等等可能都需要那些中介者的帮助,在我们软件的世界也同样如此,对象与对象之间存在着很强、复杂的关联关系,如果没有类似于联合国这样的“机构”会很容易出问题的,譬如: 1、 对象与对象之间存在大量的关联关系,这样势必会导致系...转载 2016-08-11 22:15:26 · 340 阅读 · 0 评论 -
ios 状态模式
状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。4.适用性原创 2016-08-12 16:16:50 · 607 阅读 · 0 评论 -
解释器模式
尽量不要在重要的模块中使用解释器模式,否则维护会是一个很大的问题。在项目中可以使用shell、JRuby、Groovy等脚本语言来代替解释器模式,解释器模式在实际的系统开发中使用的非常少,因为它会引起效率、性能以及维护等问题,一般在大中型的框架型项目能够找到它的身影,比如一些数据分析工具、报表设计工具、科学计算工具等等,若你确实遇到“一种特定类型的问题发生的频率足够高”的情况,准备使用解释器模式时...转载 2016-08-13 18:15:51 · 770 阅读 · 0 评论 -
访问者模式
定义:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。类型:行为类模式类图: 访问者模式可能是行为类模式中最复杂的一种模式了,但是这不能成为我们不去掌握它的理由。下面我们就来说一下访问者模式的通用实现,通过类图可以看到,在访问者模式中,主要包括下面几个角色:抽象访问者:抽象类或者接口,声明访.........原创 2016-08-14 16:28:50 · 280 阅读 · 0 评论 -
设计模式总览
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问......原创 2016-08-14 18:54:41 · 471 阅读 · 0 评论 -
iOS 单例模式
1. 单例的概念以及在iOS开发中的实现一个单例类概念:保证一个类只有一个实例,并且提供一个访问它的全局访问点。#import "DataManager.h"static dispatch_once_t onceToken = 0;static DataManager * manager = nil;@implementation DataManager// 重写load...原创 2016-08-06 17:24:08 · 519 阅读 · 0 评论 -
ios 责任链模式
iOS中的事件响应链 就是 责任链的 一个典型案例。 职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。1)在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。2)请求在这条链上传递,直到链上的某一个对象处.........转载 2016-08-11 17:43:57 · 366 阅读 · 0 评论 -
iOS 享元模式
这个模式还真没找到好文章,这个享元模式未必太复杂了吧!这点是不得不承认的,也许由于它的复杂,实际应用也不是很多,这是我们更加无法看清他的真面目了。不过享元模式并不是鸡肋,它的精髓——共享是对我们系统优化内存非常有好处的。 oc中的 tableview和collectionView 是享元模式的一个例子, cell有一个内存池 , 我们先从内存池是取值,如果没有才创建, 所......原创 2016-08-09 17:49:32 · 454 阅读 · 0 评论 -
RAC 入门
本文翻译自RayWenderlich,原文:ReactiveCocoa Tutorial--The Definitive Introduction: Part 1/2 细细的看了一天 , 总算对RAC的基本概念有了点感觉 . 作为一个iOS开发者,你写的每一行代码几乎都是在相应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocatio转载 2017-08-31 14:05:17 · 354 阅读 · 0 评论 -
iOS 命令模式
定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。类型:行为类模式类图:命令模式的结构 顾名思义,命令模式就是对命令的封装,首先来看一下命令模式类图中的基本结构:Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute原创 2016-08-08 20:08:38 · 390 阅读 · 0 评论 -
建造者模式/生成器模式
一、建造者(Builder)模式建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。对象性质的建造有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址、收件人地址、主题、内容、附录等部分,而在最起码的收件人地址未被赋值之前,这个电子转载 2016-08-08 09:19:21 · 440 阅读 · 0 评论 -
设计模式6大原则---2
六大原则设计模式(面向对象)有六大原则:开闭原则(Open Closed Principle,OCP)里氏代换原则(Liskov Substitution Principle,LSP)依赖倒转原则(Dependency Inversion Principle,DIP)接口隔离原则(Interface Segregation Principle,ISP)合成/聚合复用原则(Com原创 2016-08-15 16:16:28 · 350 阅读 · 0 评论 -
设计模式6大原则---1
设计模式六大原则(1):单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,原创 2016-08-15 15:57:54 · 334 阅读 · 0 评论 -
原型模式(重新思考深浅拷贝)
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另一个可定制的对象,而且不需知道任何创建的细节。比如说,有一个Person类,有firstName、lastName、friends这三个属性,代码如下:12345678910转载 2016-08-03 22:55:02 · 340 阅读 · 0 评论 -
iOS 外观模式
外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。1.外观模式概述 不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,如图1(A)所示,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说想要原创 2016-08-04 09:36:40 · 619 阅读 · 0 评论 -
ios 设计模式 - 装饰模式
在面向对象编程中有个重要的原则,里氏代换原则:一个软件实体如果使用的是一个父类的话,那么一定适用其子类,而且它察觉不出父类对象与子类对象的区别。也就是说,在软件设计里面,把父类替换成它的子类,程序的行为没有变化。简单的说,子类类型必须能替换掉它的父类类型。就好像继承的概念,子类继承自父类,那么子类可以以父类的身份出现。有这样一个问题,在面向对象设计中,一个是鸟类,一个是企鹅类,如果鸟是可以转载 2016-08-04 19:18:33 · 436 阅读 · 0 评论 -
简单工厂模式和工厂模式
简单工厂模式 一个工厂生产所有产品,产品少还好说,产品多这个类就变得非常大,需要很多case的判断。工厂模式一个产品对应一个工厂,该工厂只生产一个产品,解决简单工厂的case判断问题,便于扩展。这一篇主要是对比,工厂方法模式比简单工厂模式好在哪里?为什么要用这个模式?这个模式的精髓在哪里?加减乘除运算都是继承自基类运算类,然后工厂类来调用这些运算,创建相应的对象,从而进行操作,oc代码如下:运算类的基类:#import <Foundation/Foundati...转载 2016-08-05 15:24:23 · 1013 阅读 · 1 评论 -
OC反射机制
NSObject常用方法:=============================================================OC反射机制:转载 2016-08-05 16:39:54 · 256 阅读 · 0 评论 -
三种工厂模式 和 策略模式 对比
一、引子话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰)、Bmw(宝马)、Audi(奥迪)),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上 Audi后他说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放到我们程序语言中来,我们发现C语言一直是通过这种方式来坐车的!幸转载 2016-08-05 17:18:06 · 12269 阅读 · 1 评论 -
iOS 桥接模式
其实桥接模式就是将高维类的降维处理, 将一件事物本征的东西抽象成不同的类,通过不同的类的组合描述一件事物 其实这与一般的架构设计中要求的模块功能单一化的原则是一致的。同时也符合合成聚合原则。组合优于继承.生活中的一个例子: 就拿汽车在路上行驶的来说。即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也转载 2016-08-06 10:25:16 · 543 阅读 · 0 评论 -
ios 策略模式
其他设计模式:http://www.cnblogs.com/ziyi--caolu/category/732340.html原文:http://www.cnblogs.com/ziyi--caolu/p/4794673.html在实际开发过程中,app需求都是由产品那边给出,往往是他给出第一版功能,我们写好代码后,会相应的给出第二版、第三版功能,而这些功能是转载 2016-08-03 09:09:39 · 424 阅读 · 0 评论 -
适配器模式
1. 概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。3. 模式中的角色 3.1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 3.2 需要适配的类...原创 2016-08-02 10:06:10 · 183 阅读 · 0 评论 -
iOS代理设计模式
在项目中我们经常会用到代理的设计模式,这是iOS中一种消息回传的方式。iOS中消息回传方式在iOS中有很多种消息传递方式,这里先简单介绍一下各种消息回传方式。 通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式。 代理:是一种通用的设计模式,iOS中对代理支持的很好,由代理对象、委托者、协议三部分组成。 block:iOS4.0中引入的一种回调方法,可以将回调处理代码直接写在block代码块中,看起来逻辑清晰代码整齐。 target ac转载 2016-03-19 09:30:17 · 499 阅读 · 0 评论 -
代理模式
1.初识代理模式 生活中大家一定遇到这样的情况了:比如说我要买一条毛巾,不妨就是洁丽雅的吧,那一般人的话我应该不是去洁丽雅的工厂里面直接去买吧,而是我们在洁丽雅专卖店或者什么超市啊,这些地方购买,这些地方实际上就是洁丽雅毛巾的代理。这其实和我们OO中的代理模式是很相似的。 代理模式: 为其他对象提供一种代理,并以控制对这个对象的访问。(Prov转载 2016-08-06 15:33:58 · 284 阅读 · 0 评论 -
备忘录模式
基本理解这个模式有三个关键角色:原发器(Originator)、备忘录(Memento)、看管人(caretaker)。三者的基本关系是:原发器创建一个包含其状态的备忘录,并传给看管人。看管人不知道如何与备忘录交互,但会把备忘录放在一个安全之处保管好。备忘录(Memento):在 不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象回复到原先保存原创 2016-08-07 12:29:29 · 1163 阅读 · 4 评论 -
观察者模式(通知、kvo)
KVCKVC: key values coding 键值编码,间接通过字符串对应的key取出、修改其对应的属性。作用: 可以访问和修改私有成员变量、readOnly成员变量的值。(替换系统自带的导航栏、替换系统自带的Tabbar等)示例代码:12345678910转载 2016-08-03 16:15:03 · 493 阅读 · 0 评论