12 2013 档案
摘要:引言 在项目开发中,我们会遇到这样的一种场景:某些类型由于自身的逻辑,往往具有两个或多个维度的变化,比如说大话设计模式书中所说的手机,它有两个变化的维度:一是手机的品牌,可能有三星、苹果等;二是手机上的软件,可能有QQ、微信等。如何应对这种“多维度的变化”?怎样利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就是本章桥接模式所要解决的问题。 定义 “...
阅读全文
摘要:引言 在项目开发中,有时候会遇到这样的一种情景:需要使用以前开发的“一些现存的对象”,但是新环境中要求的接口是这些现存对象所不满足的。怎样应对这种迁移的需求?使得可以复用这些对象,以满足新的应用环境,这就是适配器(Adapter)所要解决的问题。 定义 “将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。” 最初的定义出现于《...
阅读全文
摘要:概述 创建型模式,就是用来创建对象的模式,它抽象了对象的创建过程。本系列文章介绍了Gof设计模式中的5种创建型模式,另外对简单工厂模式也进行了介绍,下面通过一个表格来说明它们之间的关系。 名称 GoF的定义 功能描述 Singleton 保证一个类仅有一个实例,并提供一个该实例的全局访问点。 解决的是类实例化个数的问题,严格控制实体对象的数量 Simpl...
阅读全文
摘要:概述 在前面两章中,分别介绍了简单工厂模式和工厂方法模式,我们知道简单工厂模式的优点是去除了客户端与具体产品的依赖,缺点是违反了“开放-关闭原则”;工厂方法模式克服了简单工厂模式的缺点,将产品的创建工作放到具体的工厂类,每个工厂类负责生成一个产品。但是在实际应用中,一个工厂类只创建单个产品的情况很少,一般一个工厂类会负责创建一系列相关的产品,如果我们要设计这样的系统,工厂方法模式显然不能满足应...
阅读全文
摘要:本篇小结是在2011年时候总结的,当时做一个产品的跨浏览器兼容工作,由于产品开发的时间比较早,最开始只能在IE下面(IE 8、IE 9还有点点问题)使用,做跨浏览器兼容工作的时候,主要是适配IE 6--IE 9、Safari、FireFox、Chrome,引入了jQuery框架进行改造后,大部分功能可以正常使用,现将总结分享一下。 1.eval(idName) 【问题描述】:IE、safa...
阅读全文
摘要:概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。 如何隔离出这个易变对象的变化,使得系统中“其它依赖该对象的对象”不随着需求的改变而改变,这就是本章要说的Factory Method模式了。 定义 “定义创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。” 最初的...
阅读全文
摘要:本篇和UIWebView的全屏截图,可以一起使用,先对UIWebView进行截图,然后分享到邮箱(当时做还有分享到微信、腾讯微博、新浪微博功能,这三个根据官方资料,比较容易实现,这里就不进行解说了)。 下面先列出实现邮件发送功能的源码: 1 - (void)displayMailComposerSheet 2 { 3 MFMailComposeViewController ...
阅读全文
摘要:项目开发中,我们可能会遇到如下的应用场景:将一篇文章,进行截屏(需要全屏截取,包括滚动部分)后,分享到新浪微博、邮箱等等。前段时间,我在应用开发中实现了该功能,代码也是从网上找到的,自己整理了一下。主要实现截屏的方法如下所示: 1 // 实现页面的截图(包含滚动部分) 2 - (NSData *)getImageFromView:(UIView *)view 3 { 4 NS...
阅读全文
摘要:概述 首先说明一下,简单工厂模式不属于23种GOF设计模式之一。它也称作静态工厂方法模式,是工厂方法模式的特殊实现。这里对简单工厂模式进行介绍,是为本系列后面的工厂方法和抽象工厂模式做一个引子。 定义 “专门定义一个类来负责创建其他类的实例,被创建的实例常常具有共同的父类。” 实际上就是由一个工厂类,根据传入的参数,动态的决定创建出哪一个产品类的实例。 结构图 结构图的讲解在示...
阅读全文
摘要:2013年6月份开始,就陆陆续续的研究了一下微信公众账号的使用,整理了一篇《关于微信公众平台的调研说明》的文档。文档从微信公众账号的注册、设置,到微信公众账号平台管理的各个部分,都进行了介绍(微信升级之后,现在微信公众账号平台的界面可能和文档中有所不同,但基本上通过这个文档,也知道怎么去使用)。2013年11月份,对微信公众账号进行认证,另外得到了9个开放的接口,现将9个接口应用过程进行小结一...
阅读全文
摘要:定义 "将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现"。 最初的定义出现于《设计模式》(Addison-Wesley,1994)。 看这个概念,可能感觉...
阅读全文
摘要:原型模式的定义 “使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象”。最初的定义出现于《设计模式》(Addison-Wesley,1994)。 简单来理解就是根据这个原型创建新的对象,而且不需要知道任何...
阅读全文
摘要:个人整理的系统集成项目管理工程师考试资料,有需要的去下载(下载链接在最下面)吧。 目录如下所示: 第一章信息化基础知识 信息与信息化 政府信息化与电子政务 企业资源计划(Enterprise Resource Planning,ERP) 客户关系管理(Customer Relationship Management,CRM) 供应链管理(Supply Chain Management,SCM)...
阅读全文
摘要:说在前面 进入正式的设计模式交流之前,扯点闲话。我们在项目开发的过程中,经常会不经意的使用一些常见的设计模式,如单例模式、工厂方法模式、观察者模式等,以前做.NET开发的时候,认真拜读了一下程杰老师的《大话设计模式》,程老师用诙谐的语言,贴近生活的示例,让我对设计模式有了一个大致的了解。转型做IOS开发后,一直想阅读一下针对IOS设计模式方面的书籍,也买了一本《Objective-C编程之道:...
阅读全文
摘要:定义 一个软件实体(如类、模块、函数)应当对扩展开放,对修改关闭。 定义解读 在项目开发的时候,都不能指望需求是确定不变化的,大部分情况下,需求是变化的。那么如何应对需求变化的情况?这就是开放-关闭原则要谈的。 开放-封闭原则的思想就是设计的时候,尽量让设计的类做好后就不再修改,如果有新的需求,通过新加类的方式来满足,而不去修改现有的类(代码)。那么在实际的项目开发中,是否能做到绝对的...
阅读全文
摘要:定义 客户端不应该依赖它不需要的接口; 一个类对另一个类的依赖应该建立在最小的接口上。 定义解读 定义包含三层含义: 一个类对另一个类的依赖应该建立在最小的接口上; 一个接口代表一个角色,不应该将不同的角色都交给一个接口,因为这样可能会形成一个臃肿的大接口; 不应该强迫客户依赖它们从来不用的方法。 接口隔离原则有点像单一职责原则,但是也有区别,在单一职...
阅读全文
摘要:定义 高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖细节;细节应该依赖抽象。 定义解读 依赖倒置原则在程序编码中经常运用,其核心思想就是面向接口编程,高层模块不应该依赖低层模块(原子操作的模块),两者都应该依赖于抽象。我们平时常说的“针对接口编程,不要针对实现编程”就是依赖倒转原则的最好体现:接口(也可以是抽象类)就是一种抽象,只要不修改接口声明,大家可以...
阅读全文
摘要:定义 狭义的迪米特法则定义:也叫最少知识原则(LKP,Least Knowledge Principle)。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 广义的迪米特法则定义:一个模块设计得好坏的一个重要的标志就是该模块在多大的程度上将自己的内部数据与实现有关的细节隐藏起来...
阅读全文
摘要:定义 里氏替换原则的定义有两种,据说是由麻省理工的一位姓里的女士所提出,因此以其名进行命名。 定义1:如果对一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1所定义的程序P中在o1全都替换成o2时,程序的行为不发生任何变化,那么T2为T1的子类。 定义2:所有引用父类的地方都必须能够透明地使用其子类对象。 定义解读 其实两个定义所表达的意思都相同,就是在所有...
阅读全文

浙公网安备 33010602011771号