swift - The Prototype Pattern
import Foundation class Sum : NSObject,NSCopying { var resultsCache: [[Int]]; var firstValue:Int; var secondValue:Int;
init(first:Int,second:Int) { resultsCache = [[Int]](count: 10,repeatedValue: [Int](count:10,repeatedValue: 0)); for i in 0..<10 { for j in 0..<10 { resultsCache[i][j] = i + j; } } self.firstValue = first; self.secondValue = second; }
private init(first:Int,second:Int,cache:[[Int]]) { self.firstValue = first; self.secondValue = second; resultsCache = cache; }
var Result:Int { get { return firstValue < resultsCache.count && secondValue < resultsCache[firstValue].count ? resultsCache[firstValue][secondValue] : firstValue + secondValue; } }
func copyWithZone(zone: NSZone) -> AnyObject { return Sum(first:self.firstValue, second: self.secondValue, cache: self.resultsCache); } } var prototype = Sum(first:0,second:9); var calc1 = prototype.Result; var clone = prototype.copy() as! Sum; clone.firstValue = 3; clone.secondValue = 8; var calc2 = clone.Result; println("Calc1: (calc1) Calc2: (calc2)"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |