headfirst设计模式swift版01

headfirst设计模式这本书真好,准备用一个月学完。书里讲得很清楚了。

设计原则:

1、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。

2、针对接口编程,而不是针对实现编程。

书中的代码是用java写得,现在正用swift,便做个翻译,没啥技术含量。

protocol FlyBehavior {
    func fly()  ->Void
}

protocol QuackBehavior {
    func quack() ->Void
}

class CannotFly:FlyBehavior {
    init() {

    }
    func fly()  {
        println("不会飞")
    }
}

class Quack:QuackBehavior {
    init() {

    }
    func quack()  {
        println("嘎嘎")
    }
}

class Duck {
    var flyBehavior:FlyBehavior?
    var quackBehavior:QuackBehavior?

    init() {

    }
    func swim(){

    }
    func display(){

    }

    func fly() {
        flyBehavior?.fly()
    }
    func quack()  {
        quackBehavior?.quack()
    }
}

class MiniDuckSimulator:Duck {
    override init() {
        super.init()
    }

}

let miniDuck = MiniDuckSimulator()
println("................")
miniDuck.fly()
miniDuck.flyBehavior = CannotFly()
println("................")
miniDuck.fly()
时间: 2024-08-15 03:09:35

headfirst设计模式swift版01的相关文章

代码重构(二):类重构规则(Swift版)

在上篇博客<代码重构(一):函数重构规则(Swift版)>中,详细的介绍了函数的重构规则,其中主要包括:Extract Method, Inline Method, Inline Temp, Replace Temp with Query, Introduce Explaining Variable, Split Temporary Variable, Remove Assignments to Parameters, Replace Method with Method Object等.关于

iOS开发swift版异步加载网络图片(带缓存和缺省图片)

iOS开发之swift版异步加载网络图片 与SDWebImage异步加载网络图片的功能相似,只是代码比较简单,功能没有SD的完善与强大,支持缺省添加图片,支持本地缓存. 异步加载图片的核心代码如下:  func setZYHWebImage(url:NSString?, defaultImage:NSString?, isCache:Bool){         var ZYHImage:UIImage?         if url == nil {             return   

Headfirst设计模式的C++实现——策略模式(Strategy)

前言 最近在学习<Headfirst设计模式>,里面的例子都是Java的.但是我对Java并不熟悉,所以试着用C++来实现书中的例子. 先来看看Duck以及子类 Duck.h 1 #include <iostream> 2 #include "FlyBehavior.h" 3 4 class Duck 5 { 6 private: 7 FlyBehavior *m_p_fly_behavior; 8 public: 9 virtual void quack()

iOS开发——完整项目实战Swift篇&amp;百思不得姐Swift版总结(二)

百思不得姐Swift版总结(二) tabBar和NavBar配色方案 一.常规主题色使用点 应用在发布前都会对其主题色进行设置,以统一应用的风格(可能有多套主题).在主题色设置上有几个方面,如下: 1.TabBar部分,设置图片高亮.文本高度颜色 2.NavigationBar部分,设置导航栏颜色及字体颜色 3.应用标签等,设置字体的颜色 4.应用图片主题色 主题色的设置点,大体从上面四个方面着手,图片的主题色我们可通过图片更换的方式进行处理.而通过代码来处理的1-3条,有着不同的处理方法.大家

【HeadFirst设计模式——开篇】

最近在看HeadFirst,接下来的一段时间会陆续更新有关HeadFirst设计模式相关的文章.记得很久之前在学习大话设计模式的时候,只是走马观花的大致走过一遍,至于里面很多东西都掌握的不是很好.恰巧又接触了HeadFirst,想着还是把设计模式好好的整理一下,至于是大话设计还是HeadFirst,个人看来是无关紧要的.本着学习的目的,而且都是设计模式,只不过一个是C#,一个是Java. 本来第一篇文章想着从观察者模式开始讲起,但是想着想着,还是把UML的类图的关系捋一下吧,不然的话类图都看不懂

HeadFirst 设计模式 04 工厂模式

除了 new 操作符之外, 还有更多创造对象的方法. 工厂处理创建对象的细节. 这么做的目的是为了抽象, 例如把创建比萨的代码包装进一个类, 当以后实现改变时, 只需修改这个类即可. 利用静态方法定义一个简单的工厂, 这是很常见的技巧, 被称作静态工厂. 所有工厂模式斗都用来封装对象的创建, javascript 也是一样. 工厂方法模式通过让子类决定该创建的对象是什么, 来达到将对象创建的过程封装的目的. 工厂模式定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个. 工厂方法让类把实

IOS 实现3D Touch在tableView的简单应用(swift版)

之前记录过OC版实现3D Touch功能的小小演示,最近无事整整swift,也弄个swift版的3D Touoch... 上代码. 一.3D Touch重按主屏icon出现快捷标签有两种添加方式: 1.静态添加,在工程中的info.plist文件中添加,这种方式添加的标签安装后就能显示 2.动态添加,通过代码动态添加快速入口.这种方式添加的标签,必须先运行一次App才会出现. func application(application: UIApplication, didFinishLaunch

大话设计模式C++版——工厂方法模式

工厂方法模式是以简单工厂模式为基础的,如果未了解简单工厂模式的同学可先浏览<大话设计模式C++版--简单工厂模式>.在简单工厂模式中,提到过简单工厂模式的缺陷,即违背了开发-封闭原则,其主要原因是由于switch的判断结构的使用,使修改或添加新的对象时需要改动简单工厂类的代码,不符合开放-封闭原则,那么工厂方法模式会在那方面有所改进呢?我们仍以简单工厂模式中加减法计算器为例. 1.保持简单工厂模式的 IOperation 接口和实现对象(COperation_Add 和 COperation_

大话设计模式C++版——抽象工厂模式

前面说过,简单工厂模式是最基础的一种设计模式,那以工厂命名的设计模式就是23种设计模式中最多的一种,他们一脉相承,一步一步进化而来,这里就是其中的最后一种--抽象工厂模式(Abstract Factory),其是在工厂方法模式的基础上改进而来,如果没有弄明白工厂方法模式的同学请先观看<大话设计模式C++版--工厂方法模式>. 为什么会有抽象工厂模式?抽象工厂模式是简单工厂模式缺陷的终极解决方式么?NO,抽象工厂模式并不是为了解决简单工厂模式的缺陷而活着,它是因为有新的使命而诞生. 一个简单的例