设计模式
文章平均质量分 81
Longshihua
喜欢iOS开发,目前在上海工作!专注Swift学习!
展开
-
Swift - 生成器模式(Builder Pattern)
没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。下面就一起来看看生成器模式生成器模式生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的原创 2016-10-25 16:07:58 · 1240 阅读 · 0 评论 -
iOS - 备忘录模式(Memento Pattern)
在响应某些事件时,应用程序需要保存自身的状态,比如当用户保存文档或者程序退出时。具体一点:当游戏退出之前,可能需要保存当前会话的状态,如游戏等级、敌人的数量、可用武器的种类等。当游戏再次打开时,玩家可以从离开的地方接着玩。很多时候,保存程序的状态真的不需要什么特别的方法,任何简单有效的方法都可以,但是保存的信息应该只对原始程序有意义。模式定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对...原创 2018-07-05 17:34:03 · 763 阅读 · 0 评论 -
设计原则 - 依赖倒置原则(DIP)
依赖倒置原则依赖倒置原则(Dependence Inversion Principle, DIP)原始定义是High level modules should not depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details.D...原创 2018-07-17 18:04:27 · 630 阅读 · 0 评论 -
Swift - 抽象工厂模式
什么是抽象工厂模式抽象工厂模式(Abstract Factory Pattern) 是一种比较常见的设计模式,其定义如下:Provide an interface for creating families of realted or dependent objects without specifying their concrete classes.(为创建一组相关或相互依赖的对象提供一个...原创 2018-07-17 15:33:44 · 990 阅读 · 0 评论 -
Swift4 - KVC与KVO
KVC和KVO是我们开发中常用的功能,现在来看一下在Swift4中的变化KVC在Swift4的时候,Struct也支持KVC,我们不在使用setValue: forKeypath的方式,而是使用新的语法特性,索引,下面看一下例子,参考这里:struct Person { var name: String}struct Book { var title:原创 2017-12-05 20:42:51 · 2058 阅读 · 0 评论 -
iOS - 策略模式(Strategy Pattern)
策略模式定义定义一系列的算法,把它们一个个封装起来,并且使它们可相互替代。策略模式的三个角色策略模式使用的是面向对象的继承和多态机制,一起来了解一下策略模式中的三个角色:Context封装角色简单理解为上下文,起承上启下的作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。Strategy抽象策略角色策略,算法家族的抽象,通常为接口,定义每个策略或者算法必须具有的方法和属性。Concre...原创 2018-07-03 15:02:02 · 859 阅读 · 0 评论 -
设计原则 - 里氏替换原则
在面向对象的语言中,继承是必不可少的、非常优秀的语言机制,它有如下优点:代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;提高代码的重用性;子类可以形似父类,但又异于父类,“龙生龙,凤生凤,老鼠生来会打洞”是说子拥有父的“种”,“世界上没有两片完全相同的叶子”是指明子与父的不同;提高代码的可扩展性,实现父类的方法就可以“为所欲为”了,君不见很多开源框架的扩展接口都是通过继承父类来完成的...原创 2018-07-16 13:00:01 · 407 阅读 · 0 评论 -
Swift4 - KVO的浅析
KVOKVO即Key-Value-Observing,键值观察,是观察者模式的一种实现。KVO提供了一种机制能够方便的观察对象的属性。如:指定一个被观察对象,当对象的某个属性发生变化时,对象会获得通知,进而可以做出相应的处理。KVO实现原理官方文档具体描述如下:Automatic key-value observing is implemented using a technique called...原创 2018-04-12 14:53:10 · 5154 阅读 · 0 评论 -
Swift - 单例
单例模式 - Singleton 单例模式确保每个指定的类只存在一个实例对象,并且可以全局访问那个实例。一般情况下会使用延时加载的策略,只在第一次需要使用的时候初始化。 注意:在 iOS 中单例模式很常见,NSUserDefaults.standardUserDefaults() 、 UIApplication.sharedApplication() 、 UIScreen.m...原创 2015-10-29 18:13:41 · 503 阅读 · 0 评论 -
iOS - MVVM
作为一名iOS开发者,我们经常使用MVC模式,也就是Model-View-Controller.这是一种标准的方式来构建我们的iOS应用。但是由于MVC存在着一些问题,所以在iOS开发中,开始使用了一种新的架构MVVM,即Model-View-ViewModel. 首先回顾一下我们常用的MVC模式。Model-View-Controller由图可知,官方内容,MVC设计模式将应用中的对象分为3种角...原创 2017-12-25 14:24:55 · 2662 阅读 · 0 评论 -
Swift-桥接模式(Bridge Pattern)
桥接模式1:桥接模式的目的是把抽象层次结构从其实现中分离出来,使其能够独立变更。2:抽象层定义了供客户端使用的上层的抽象接口。实现层次结构定义了抽象层次使用的底层接口。3:实现类的引用被封装于抽象层的实例中,桥接就形成了。示意图Abstraction:定义了供客户端使用的上层抽象接口的父接口,它有一个对Implementor实例的引用原创 2016-10-31 16:37:54 · 1594 阅读 · 0 评论 -
Swift-中介者模式(The Mediator Pattern)
中介者模式(The Mediator Pattern) 在软件工程中,中介者模式定义了一个对象封装了一些列对象的交互.这种模式被认为是一个行为模式,因为它可以改变程序的运行行为。也可以看这里。通常一个程序是由大量的类组成。所以相关逻辑和计算被分布在类间。然而,随着更多的类被应用到程序中,特别是在维护或重构期间,这些类之间的沟通和交互的问题可能会变得更为复杂。这使得程序难以阅读和维护。此...原创 2016-10-14 14:31:14 · 778 阅读 · 0 评论 -
Swift-适配器模式(Adapter Pattern)
早在19世纪,尼古拉.特斯拉发明了交流电力系统。他也许想象不到,我们要把美国用的电气设备插到欧洲墙上的插座,却没有适配器时的烦恼。设想我在欧洲一个旅管的卫生间里,手拿一个电动剃须刀,看着墙上的插座,却忘了带适配器。现在该怎么办?应该在这儿买个剃须刀吗?可是带回美国还得给它弄个适配器。 在面向对象软件设计中,有时候我们想把有用而经过精心测试的类,用于应用程序的其他新领域。但是,性功能原创 2016-10-27 15:43:21 · 1305 阅读 · 0 评论 -
Swift-原型模式(Prototype pattern)
定义原型模式是一种非常简单的是模式,属于创建型设计模式的一种。原型模式(Prototype)即应用于“复制”操作的模式,此模式最初定义在《设计模式》(Addison-Wesley,1994),定义为:“使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象”。简单来理解就是根据这个原型创建新的对象,这种创建是指深复制,得到一份新的内存资源,而不是一个新的指针引用。我们都原创 2016-10-20 09:53:18 · 927 阅读 · 0 评论 -
Swift-工厂方法(Factory Method)
工厂方法模式是抽象工厂模式的组成部分。各种具体工厂重载其抽象工厂父类中定义的工厂方法,并且用这个重载的工程方法创建自己的产品(对象).生产者自身不必是抽象工厂,它可以是任何类,要点在于不是直接创建对象,而是使用类或者对象的工厂方法创建具体产品,并以抽象类型返回。工厂方法工厂方法(英语:Factory method)是一种实现了“工厂”概念的面向对原创 2016-10-21 16:16:23 · 2410 阅读 · 0 评论 -
Swift-外观模式(Facade pattern)
比方说你今天不想开车,于是打电话叫了出租车。只要出租车能把你送到目的地,你不太在意车的牌子和型号。你会对出租车司机说的第一句话就是“送我去X”,X就是你想去的地方。然后出租车司机就开始执行一系列的“命令”(送刹车、换挡、踩油门等)。出租车司机抽象走了驾驶汽车的底层复杂操作的细节。他通过提供驾驶服务(简化了的接口),把你与原本复杂的车辆操作接口分离开来。出租车司机与你之间的接口只是一个简单的”送我去原创 2016-11-04 10:18:43 · 844 阅读 · 0 评论 -
设计原则 - 单一职责原则
单一职责原则定义:单一职责原则的英文名称是Single Responsibility Principle,简称是SRP。SRP原则的解释是:There should never be more than one reason for a class to change。即不要存在多于一个导致类变化的原因,简单来说:就是一个类只负责一项职责。问题由来:假如一个类T负责两个不同的职责:职责P1...原创 2018-07-13 17:33:06 · 270 阅读 · 0 评论