
程序设计
文章平均质量分 58
andyweike
不怕路太远找不到终点,就怕两个世界画不成一个圆。(本博客的目的主要是方便自己查看,不免内容结构随意,博友可选择参考)
展开
-
其它结构型模式
组合模式将对象组合成树形结构,以表示部分-整体的层次结构。它使得用户对组合对象的操作与对单个对象的操作具有一致性。抽象组件接口中声明添加、删除和一些其它业务方法,节点组件实现所有方法,叶节点只需实现其它业务方法。组合模式带来的操作一致性是透明方式的体现,叶节点和节点一样也含有添加删除方法,但没有意义。另一种方式是安全方式,即抽象组件接口中不声明添加、删除方法,让树叶和树枝实现不同的接口,但这样客户端调用时需要做判断,带来了操作不一致。原创 2024-12-28 14:30:06 · 327 阅读 · 0 评论 -
设计模式-工厂模式
简单工厂模式中,产品是抽象的,工厂不是抽象的,在工厂类中面对各种具体产品。可以考虑使用简单工厂模式与工厂方法模式相结合的方式来减少工厂类:即对于产品树上类似的种类(一般是树的叶子中互为兄弟的)使用简单工厂模式来实现。工厂方法模式中,产品是抽象的,工厂也是抽象的,每个具体工厂类面对一个具体产品。在模板模式中,抽象类中的一个模板方法是用来创建抽象对象的,创建何种具体类推迟到子类中实现。用于创建一些复杂的对象,这些对象内部构建间的建造过程顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。原创 2024-12-28 14:16:27 · 389 阅读 · 0 评论 -
设计模式的分类
结构型模式:将已有对象加入到的的设计中时,使用结构型模式作为指导。常用的有外观模式,适配器模式,桥接模式,装饰模式,另外还有组合模式,享元模式,代理模式。常用的有单例模式,简单工厂模式,工厂方法模式,另外还有原型模式,抽象工厂模式,建造者模式原创 2024-12-28 13:58:17 · 384 阅读 · 0 评论 -
工程结构
1.ios工程结构 目录: lib util //和业务相关的工具,其它工具在lib中 data view controller manager //可选。全局数据,业务管理 engine // 程序入口,使业务代码尽量和开发工具生成的工程模板代码分离 一些必要文件: CustomDefine.h原创 2009-07-16 11:32:00 · 682 阅读 · 0 评论 -
设计模式
1.设计模式源自建筑学和人类学,模式结合起来可以解决更复杂的问题。 一个模式的描述应该包括4项:模式的名称,模式的目的(即要解决的问题),模式的实现方法,约束因素。 2.设计模式和面向对象是相得益彰的关系。 学习设计模式我们可以:复用解决方案;确立通用术语;提升了观察视角; 设计模式可以帮助团队提高效率,使软件更容易修改和维护, 3.设计常被认为是一种将事原创 2009-09-26 09:21:00 · 666 阅读 · 0 评论 -
登录验证和通行验证的概念
登录登录包括身份认证和返回通行证双向过程。身份认证信息例如有:账号+密码+图片验证码、账号+短信验证码。通行证例如有Token,token中加密了账户的详细信息。通行通行信息例如有:账号+token。服务端要解析验证token有效,并且和账号匹配。通行证验证和登录验证的区别通行证相当于替代了密码+验证码,安全不敏感,用在频繁的通行验证中更方便。...原创 2010-10-03 19:12:00 · 715 阅读 · 0 评论 -
Singleton模式
1.定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。2.补充:类是无状态的。 Singleton模式用在单线程应用中 3.一种变体 Double-Checked Locking模式,适用于多线程。 在检查到null之后进行同步,在同步代码中再检查一次,确保实例尚未创建。 意图是优化掉不必要的锁定,这种同步检查最多进行一原创 2011-09-03 10:41:53 · 572 阅读 · 0 评论 -
Composite 组合模式
1.组合模式:将对象组合成树形结构,以表示部分-整体的层次结构。它使得用户对单个对象的操作,与对组合对象的操作具有一致性。2.枝节点要实现添加、删除枝或叶的行为。 组合模式带来的操作一致性是透明方式的体现。 另一种安全方式要求树叶和树枝实现不同的接口,这样客户端调用时需要做判断,带来了操作不一致,操作不便。3.当需求中体现了部分与整体层次的结构时,或者原创 2010-01-07 00:55:00 · 434 阅读 · 0 评论 -
iterator 迭代器模式
1.iint 不同于Integer , 主键设置为integer primary key autoincrement才自动增长。2.有一个新的API叫做 sqlite3_last_insert_rowid(), 它将返回最近插入的整数值。注意该整数会比表中该列上原创 2011-10-17 16:16:58 · 612 阅读 · 0 评论 -
Bridge模式
1.问题:一个抽象类的不同派生类使用不同的实现,此时容易出现类数量爆炸性增长。2.解决:为实现封装为另一个抽象类B,供抽象类A的所有派生类使用。将实现与使用它们的对象分离。3.定义:桥接模式就是将抽象与其实现解耦,使它们可以独立的变化。(这里的实现是指抽象类及其派生类中用来实现自己逻辑的其它对象,而抽象类的派生类被称为具体类)。 抽象是指事物之间在概念上的联系原创 2011-09-23 20:21:45 · 730 阅读 · 0 评论 -
Observer模式,delegate(委托)模式
观察者(Observer)模式1.定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。2.观察者(Observer),是希望得到获得通知的对象。 目标(subject),触发事件的对象. 如果Observer对象需要从subject那里获得更多信息,就需要传给接口函数一个指向调用对象(subject)的引用.3.Obs原创 2011-10-06 10:03:10 · 2112 阅读 · 0 评论 -
设计模式的原则和策略
在局部层次,模式告诉如何解决给定背景下的特定问题;在全局层次,模式提供了一张应用程序各组件的关系图。1.单一职责原则 类中的职责过多时,一具职责变化可能会削弱或抑制这个类完成其它职责的能力,导致脆弱的设计。 如果能想到多于一个的动机改变这个类,则这个类就具有多于一个的职责,就应该考虑类的职责分离。 这个原则也即是强内聚,松耦合。2.开闭原则,open原创 2011-03-27 13:42:00 · 845 阅读 · 0 评论 -
建造者模式,生成器模式
1.将一个复杂对象的构建,与它的表示分离。使的同样的构建过程可以创建不同的表示。 主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,而对象内部的构建通常面临着复杂的变化。2.建造者继承建造接口类,必须实现所有技能; 指挥者指挥建造者按顺序施展一些技能;3.建造者模式是在,当创建复杂对象的算法,应该独立于该对象的组成部分以及它们的装配方式,原创 2011-05-13 22:54:00 · 561 阅读 · 0 评论 -
Memento备忘录模式
1.备忘录模式:在一个对象之外保存一份这个对象的部分或全部内部状态。以后可以将这个对象恢复到保存时的状态。2.本质是要求有一个独立的备忘录数据对象,它封装了需要备份的数据参数细节。 不破坏封装性:使用数据对象的业务对象,能看到数据对象的宽接口,即可以访问数据对象的各个数据参数。而备份数据对象的持有者,只能看到数据对象的窄接口,即只能传递数据对象,而不能操作其中的数据细节。 若需原创 2012-06-05 14:05:53 · 572 阅读 · 0 评论 -
Adapter模式
1.定义:将一个类的接口转换成希望的另一个接口。使原来由于接口不兼容而不能一起工作的类可以一起工作。2.补充:通常用于需要的类必须从抽象类派生,但现有的类不是; Adapter模式最终提供了具有所需接口的包装类; Adapter模式最常见的用途就是保持多态性; 3.实现:将原有类包含在另一个类中,让包含类与需要的接口匹配,调用原创 2011-09-15 21:46:41 · 736 阅读 · 0 评论 -
敏捷编程
1.极限编程的思想是循序渐近的开发,在编程的同时进行验证,大的概念从众多小的概念中演变出来。 为了设计出高质量代码,它与设计模式同样追求一些品质:无冗余,可读,可测试。 敏捷编程是在熟练领悟设计模式思想后才能良好做到的。2.无冗余 一次规则:一个规则,一个地方。 这通常要求多使用几个方法,增加的开销是非常小的,而好外却很明显。重复的代码实际上也是互相耦合的。原创 2011-02-18 10:49:00 · 730 阅读 · 0 评论 -
分析矩阵
1.analysis matrix,它是决策表的一种简单变形 新增一行表示发现的新规则 新增一列表示新发现的特定情况,即具体实现 对于一个特性,查看最左一列,看这个特性是哪个概念的变化。如果找到了这个概念,就将该概念放入那一行中;如果找不到,说明必须创建新行。 矩阵也可以有子矩阵,矩阵中的矩阵。原创 2011-05-13 23:54:00 · 650 阅读 · 0 评论 -
Strategy模式
1.背景: 短期的抄近路,可能会在长期导致问题严重复杂化。一些原因使许多项目只关心处理眼前的紧迫需求,却不顾将来的维护。 软件开发的两个错误的极端:分析瘫痪和放任自流。 2.处理概念上完全相同的不同实现有下面几种方案: (1)复制粘贴:忽略了重用对象的可能性。 (2)用一个变量指定各种情况:可能会出现分支蔓延,降低可测试性。 (3)使用函数指针或委托:无原创 2011-09-18 21:02:52 · 618 阅读 · 0 评论 -
编码规范,objective-c编码规范
参考了>1.匈牙利命名 和 不要盲目使用匈牙利命名命名规范是程序书写规范中最重要也是最富争议的地方,自古乃兵家必争之地。命名规范有何用?四个字:名正言顺。好的舞鞋是让舞者感觉不到其存在的舞鞋,坏的舞鞋是让舞者带着镣铐起舞。匈牙利命名法的成本:匈法的表现形式为给变量名附加上类型名前缀,例如:nFoo,szFoo,pFoo,cpFoo分别表示整型变量,字符串型变量,指针型变量和常指针型原创 2009-12-14 12:04:00 · 1033 阅读 · 0 评论 -
Decorator模式
1.定义: 动态的给一个对象添加一些额外的职责。比生成子类更加灵活。 工作原理是:创建始于Decorator对象,终于原对象的一个对象链。 此模式的核心是让功能对象变为装饰对象链。 Concrete 具体的 Decorator 装饰对象 抽象类Decorator和ConcreteComponent都继承抽象类Component,Decorator原创 2010-06-30 22:31:00 · 688 阅读 · 0 评论 -
Proxy 模式
1.为对象A提供一种代理,以控制对对象A的访问。1.代理类需要使用被代理类来做业务逻辑,所以代理类需要包含被代理类的实例,这跟适配器模式是一样的。 含有真实主题的引用,可以在任何时候操作真实主题,,可以控制真实主题的创建或删除,可以在真实主题被调用前进行拦截或在调用后进行某些操作。 常会再为代理类和被代理类抽象出一个公共接口。这个接口的目的之一是约束双方的行为,原创 2011-02-21 14:30:00 · 674 阅读 · 0 评论 -
Prototype 模式
Clone已有对象;Clone()方法实现浅复制,Copy()方法实现深复制。原创 2010-06-30 21:28:00 · 450 阅读 · 0 评论 -
Template Method 模式
1.模板方法定义一个算法中的骨架,将一些步骤延迟到子类中实现。 模板方法使子类可以不改变算法的结构,即可重定义该算法的某些特定步骤。 模板方法模式旨在对步骤标准化,但步骤的细节是变化的。2.模板方法是指在抽象类中定义的执行固定过程的方法。 使用抽象类实现一系列过程,这些抽象方法在子类中具体实现,如果步骤是独立变化的,那么这个步骤可以使用Strategy模式实原创 2012-08-09 10:46:25 · 615 阅读 · 0 评论 -
Facade模式
1.定义:Facade模式,门面模式,外观模式:为子系统中的一组接口提供一个统一的更高层接口,使子系统更加容易使用。2.补充:对于一个复杂的系统,只使用其中部分功能,或以特殊方式使用它。 提供了一组容易理解的方法,这些方法使用底层系统功能实现。新类的api比原类的api简单的多。 减少了客户需要处理的对象的数量。原创 2011-09-03 10:20:35 · 595 阅读 · 0 评论 -
State模式
一个函数内的方法过长,则出现了坏味道。这往往违背了单一职责原则,并且还将违背开闭原则。状态模式:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。状态模式 主要解决的是 控制一个对象状态转换的条件表达式过于复杂的问题。把状态的判断逻辑转移到表示不同的状态的一系列类中,简化复杂的判断逻辑。如果原状态判断很简单,则没必要用状态模式了。状态模式的好处是将与特定状态原创 2013-06-03 16:35:43 · 1006 阅读 · 1 评论 -
面向对象范型
1.面向对象范型是为了应对使用标准化结构程序设计遇到的诸多挑战应运而生的。2.功能分解是处理复杂问题的自然方法。解决小问题比解决整个问题要简单。 功能分解方法通常会让一个主程序控制子程序,但可能出现的问题是:主程序承受的责任太多了,经常会产生复杂的代码。如果让一些子函数负责自己的行为,并且告知主函数执行某些任务,这就是委托。 另一个问题是,它艰难的应对变化。变化到来时,它可能要原创 2009-05-26 12:48:00 · 3442 阅读 · 0 评论