zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    正则表达式
    70. 爬楼梯
    最大子序和
    动态规划
    中序遍历
    两数相加基础
    保证一个线程最后执行或者最先执行CyclicBarrier
    保证一个线程最后执行使用CountDownLatch
    两个线程交替执行
    单列模式double check的问题
  • 原文地址:https://www.cnblogs.com/xdao/p/design_pattern_in_swfit01.html
Copyright © 2011-2022 走看看