Swift中的Decorator Pattern产生了一个SegFault

时间:2014-07-19 22:09:00

标签: design-patterns compiler-errors segmentation-fault swift decorator

我正在尝试使用装饰器模式在Swift中实现一个简单的咖啡店模拟器。

我相信我的实现有点正确,但在构建项目时会产生编译错误 - SegFault。

我知道Swift仍在开发中,但我想知道我做错了什么。

快速解释代码 - 我正在尝试创建一种Espresso类型的饮料,然后用Milk类装饰它。

//
//  main.swift
//  CoffeeShop

import Foundation
import Cocoa

protocol Beverage {
    var description:String { get set }
    func cost() -> Float
}

class HouseHoldBlen:Beverage {
    var description = "House Hold Blend Coffee"
    func cost() -> Float {
        return 0.89
    }

}

class Espresso:Beverage {
    var description = "Esspresso"

    func cost() -> Float {
        return 1.99
    }
}

protocol CondimentDecorator:Beverage {
    func getDesc() -> String
}

class Milk<B:Beverage>:CondimentDecorator {
    var description = "Milk"
    var beverage:B

    init(bev:B){
        self.beverage = bev
    }

    func getDesc() -> String {
        return self.beverage.description + self.description
    }

    func cost() -> Float {
        return self.beverage.cost() + 0.10
    }

}

var bev1:Beverage = Espresso()
println(bev1.cost())
bev1 = Milk(bev: bev1) //This line seems to be the problem.
//println(bev1.cost())

每当我尝试使用新类实际装饰现有的Beverage对象时,似乎会出现问题。

0 个答案:

没有答案