摘要: 第6讲:Prototype 原型模式2005.12.30 李建忠依赖关系的倒置抽象不应该依赖于实现细节,实现细节应该依赖于抽象。-抽象A直接依赖于实现细节b(软件易脆,很容易需要重新编译)-抽象A依赖于抽象B,实现细节b依赖于抽象B动机(Motivation)在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求改变而改变?意图(Intent)使用原型实例指定创建对象的种类,然后通过 阅读全文
posted @ 2012-04-05 15:26 woainilsr 阅读(199) 评论(0) 推荐(0)
摘要: 第5讲:Factory Method 工厂方法模式2005.12.19 李建忠从耦合关系谈起耦合关系直接决定着软件面对变化时的行为-模块与模块之间的紧耦合使得软件面对变化时,相关模块都要随之更改-模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变抽象部分变化慢,细节(具体)部分变化快;高层部分变化慢,底层部分变化快。当我们对于系统的认识无法梳理出上面的图时,最好不要一开始就用设计模式,设计模式其实是一个演绎的过程。当我们对软件认识不断深化时,慢慢就会知道哪些是主要的,哪些是次要的,就能梳理出一个抽象和具体的层次,再考虑用哪种设计模式。第二幅图满足了依赖倒 阅读全文
posted @ 2012-04-05 15:07 woainilsr 阅读(194) 评论(0) 推荐(0)
摘要: 第4讲:Builder 生成器模式2005.11.29 李建忠Builder模式的缘起假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化。如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正……动机(Motivation)在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改 阅读全文
posted @ 2012-04-05 14:55 woainilsr 阅读(287) 评论(0) 推荐(0)
摘要: 第2讲:Singleton 单件2005.10.25 李建忠模式分类从目的来看:-创建型(Creational)模式:负责对象创建-结构型(Structural)模式:处理类与对象间的组合-行为型(Behavioral)模式:类与对象交互中的职责分配从范围来看:-类模式处理类与子类的静态关系-对象模式处理对象间的动态关系动机(Motivation)在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?这应该是类设计者的责任,而不是使用者的责任意图(Intent)保证一个类仅 阅读全文
posted @ 2012-04-05 14:37 woainilsr 阅读(852) 评论(0) 推荐(0)
摘要: 工厂模式(静态工厂模式、工厂方法模式、抽象工厂模式)一、引子话说十年前,有一个暴发户,他家有三辆汽车——Benz 奔驰、Bmw 宝马、Audi 奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的:上 Benz 车后跟司机说“开奔驰车!”,坐上 Bmw 后他说“开宝马车!”,坐上 Audi 说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?!而当把这个暴发户的行为放到我们程序设计中来时,会发现这是一个普遍存在的现象。幸运的是,这种有病的现象在 OO(面向对象)语言中可以避免了。下面就以 Java 语言为基础来引入我们本文的主题:工厂模式。二、分类 工厂模式主要是为创建对象提供过渡接. 阅读全文
posted @ 2012-04-05 11:34 woainilsr 阅读(3972) 评论(0) 推荐(0)
摘要: 开闭原则简介 开闭原则是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。 1988年,Bertrand Meyer在他的著作《Object Oriented Software Construction》中提出了开闭原则,它的原文是这样:“Software entities should be open for extension,but closed for modification”。翻译过来就是:“软件实体应当对扩展开放,对修改关闭”。这句话说得略微有点专业,我们把它讲得更通俗一点,也就是:软件系统中包含的各种组件,例.. 阅读全文
posted @ 2012-04-05 11:01 woainilsr 阅读(453) 评论(0) 推荐(0)
摘要: UIScrollView的属性总结属性作用CGPoint contentOffSet监控目前滚动的位置CGSize contentSize滚动范围的大小UIEdgeInsets contentInset视图在scrollView中的位置id<UIScrollerViewDelegate>delegate设置协议BOOL directionalLockEnabled指定控件是否只能在一个方向上滚动BOOL bounces控制控件遇到边框是否反弹BOOL alwaysBounceVertical控制垂直方向遇到边框是否反弹BOOL alwaysBounceHorizontal控制水平方 阅读全文
posted @ 2012-03-28 19:38 woainilsr 阅读(58326) 评论(6) 推荐(13)
摘要: iPhone应用程序编程指南分类:iOS-中级2011-09-27 15:091000人阅读评论(0)收藏举报介绍请注意:本文档之前命名为iPhone OS编程指南。iPhone SDK为创建iPhone的本地应用程序提供必需的工具和资源。在用户的Home屏幕上,iPhone的本地应用程序表示为图标。它们和运行在Safari内部的web应用程序不同,在基于iPhone OS的设备上,它们作为独立的执行程序来运行。本地应用程序可以访问iPhone和iPod Touch的所有特性,比如加速计、位置服务、和多点触摸接口,正是这些特性使设备变得更加有趣。本地应用程序还可以将数据保存在本地的文件系统中, 阅读全文
posted @ 2012-02-28 11:00 woainilsr 阅读(3479) 评论(0) 推荐(0)
摘要: 1.最常见的原因是 contentSize 这个属性,比uiscrollview的frame要小, 无需滚动, 自然就滚动不了。 scrollenabled 这个属性,标识着是否允许滚动,要言设成yes另外还有一些比较隐蔽的原因. 如果这个scrollView是在IB里面生成的话,还得手动设置它的contentSize,并且不能在initWithNibName:bundle:里面设置,因为The nib file you specify is not loaded right away. It is loaded the first time the view controller’s v.. 阅读全文
posted @ 2012-02-26 18:27 woainilsr 阅读(22368) 评论(0) 推荐(0)
摘要: the View Management CycleThe steps that occur during the load cycle are as follows:Some part of your application asks for the view in the view controller’sviewproperty.If the view is not currently in memory, the view controller calls itsloadViewmethod.TheloadViewmethod does one of the following:If y 阅读全文
posted @ 2012-02-26 17:49 woainilsr 阅读(376) 评论(0) 推荐(0)