07 2015 档案

摘要:中介者模式中介者模式很好的诠释了迪米特法则,任意两个不相关的对象之间如果需要关联,那么需要通过第三个类来进行。中介者就是把一组对象进行封装,屏蔽了类之间的交互细节,使不同的类直接不需要持有对方引用也可以进行访问。中介者Mediator会持有同事类(就是需要处理交互逻辑的对象)Colleague的引用... 阅读全文
posted @ 2015-07-26 16:52 愤怒大熊猫 阅读(714) 评论(0) 推荐(0)
摘要:外观模式外观设计模式和适配器差不多,不过它门对对象控制的粒度不同,适配器一般只是控制一个系统和客户端的对接。外观则是用来抽象多个系统一起工作。外观一般具有多个子系统,所以外观应持有多个子系统的引用,同构向高层提供抽象接口实现封装。外观一般是可以多次使用的,比如一个庞大的系统中,可以多次使用外观来进行... 阅读全文
posted @ 2015-07-26 11:07 愤怒大熊猫 阅读(583) 评论(0) 推荐(0)
摘要:桥接模式桥接模式就是让抽象和实现分离的最好体现,符合面向对象的依赖倒转原则。Abstruct抽象类负责设计客户端接口,Implementor则负责具体的细节逻辑。在桥接模式中,Abstruct类持有一个Implementor类的引用,该引用也是桥接的两个对象的唯一通信点。应用场景1.不想在抽象与其实... 阅读全文
posted @ 2015-07-25 09:19 愤怒大熊猫 阅读(853) 评论(0) 推荐(0)
摘要:适配器模式适配器模式通俗来讲,其实就是对客户端添加新的类但却不修改客户端和新的类的接口。此时我们需要自己来实现适配,在适配器模式中有Target对象,即客户端所需要的接口对象,Adaptee对象,即需要适配的对象,中间需要Adapter对象来进行适配。简单来说,客户端要用某个类的接口,但是和客户端所... 阅读全文
posted @ 2015-07-22 22:09 愤怒大熊猫 阅读(1205) 评论(0) 推荐(0)
摘要:单例和其它语言的单例产不多,可以说是最简单的一种设计模式了。但是有几个点需要注意下,单例就是一个类只有一个实例。所以我们要想办法阻止该类产生别的实例,一般语言中都会将构造函数写为private。但是OC中的函数并没有限定符,所以我们需要用一些小技巧来屏蔽这一点。应用场景类只能有一个实例,而且必须从一... 阅读全文
posted @ 2015-07-21 21:13 愤怒大熊猫 阅读(1368) 评论(0) 推荐(0)
摘要:生成器生成器,也成为建造者模式,同样是创建对象时的设计模式。该模式下有一个Director(指挥者),客户端知道该类引用用来创建产品。还有一个Builder(建造者),建造者知道具体创建对象的细节。指挥者只是起到协调的作用,它有一个Builder引用用于指挥Builder如何创建对象,Builder... 阅读全文
posted @ 2015-07-21 09:20 愤怒大熊猫 阅读(861) 评论(0) 推荐(0)
摘要:抽象工厂模式理解了工厂方法模式,其实抽象工厂和工厂方法模式有很多的相似之处。抽象工厂同样是分离客户端对象的创建和逻辑代码的,但是抽象工厂往往是产生一组数据而不单单是产生一个产品。抽象工厂提供一个创建一系列相关或相互依赖对象接口,而无需制定它们具体的类。抽象工厂与工厂方法抽象工厂通过对象组合创建抽象产... 阅读全文
posted @ 2015-07-20 09:14 愤怒大熊猫 阅读(728) 评论(0) 推荐(0)
摘要:工厂方法模式工厂方法模式可以控制对象的创建过程,屏蔽对象创建的细节,可以直接创建出我们所需要的已经配置好的对象。工厂方法模式定义了创建方法的接口,让子类决定实例化哪一个类,工厂方法模式使得一个类的实例化延迟到其子类。工厂方法的工厂其实是多太的一个经典应用,而其生产的产品取决于使用什么工厂,符合面向对... 阅读全文
posted @ 2015-07-19 22:14 愤怒大熊猫 阅读(583) 评论(0) 推荐(0)
摘要:1.原型原型设计模式所谓原型设计模式,其实就是对象复制,这个特性在所有语言基本上都是存在的。我们知道在OC中,对象赋值其实是对对象的引用复制,其实就是相当于C语言中的指针。创建了一个新的变量,但是还是指向的同一块内存地址。所以一旦一个引用改变了该对象的属性,那么其他指向该对象的引用全部都会发生变化。... 阅读全文
posted @ 2015-07-19 21:19 愤怒大熊猫 阅读(622) 评论(0) 推荐(1)
摘要:之前虽然也手写过这两中视图控制器,但是更多的还是使用SB来创建,最近发现了一些问题,现在总结一下。1.改变UINavigationBar的颜色在UINavigationController中,之前只需要设置UINavigationController.navigationBar.tintColor ... 阅读全文
posted @ 2015-07-18 10:51 愤怒大熊猫 阅读(752) 评论(0) 推荐(1)
摘要:推到大O阶方法:1.用常数1取代运行时间中的所有加法常数。2.在修改后的运行次数函数中,只保留最高阶项。3.如果最高阶项存在且不是1,则去除与这个项相乘的常数。得到的结果就是大O阶。常数阶如果没有循环和递归语句,只是单纯的顺序结构,那么算法复杂度为O(1)。对于分支分支结构来说,无论真假,执行的次数... 阅读全文
posted @ 2015-07-12 10:09 愤怒大熊猫 阅读(1147) 评论(0) 推荐(0)