Swift 08 备忘录模式 Memento Pattern

来源:互联网 发布:苹果铃声mac 编辑:程序博客网 时间:2024/06/06 18:32
/*纪录大宏药业机器的操作日志。药物:Aspirin、Paracetamol工作:Wrap、Ship操作员也返回看各个工作的纪录。*/// 原发器class Mechanic {var p_mOperaNumber : Int = 0var p_stMedicineName : String = ""var p_stEquipOperation : String = ""func setOperaNumber(p_mInputOperaNum : Int) {p_mOperaNumber = p_mInputOperaNum}func getOperaNumber() -> Int {return p_mOperaNumber}func setMedicineName(p_stInputMediName : String) {p_stMedicineName = p_stInputMediName}func getMedicineName() -> String {return p_stMedicineName}func setEquipOperation(p_stInputEquipOper : String) {p_stEquipOperation = p_stInputEquipOper}func getEquipOperation() -> String {return p_stEquipOperation}func saveEquipMemento() -> EquipMemento {return EquipMemento(p_mInputOperaNum : p_mOperaNumber, p_stInputMediName : p_stMedicineName, p_stInputEquipOper : p_stEquipOperation)}func getEquipMemento(p_obEquipMemento : EquipMemento) -> EquipMemento {return p_obEquipMemento}}// 备忘录 多个备忘录物件 储存在阵列 提取阵列就可以有备忘录功能class EquipMemento {var p_mOperaNumber : Int = 0var p_stMedicineName : String = ""var p_stEquipOperation : String = ""init(p_mInputOperaNum : Int, p_stInputMediName : String, p_stInputEquipOper : String) {p_mOperaNumber = p_mInputOperaNump_stMedicineName = p_stInputMediNamep_stEquipOperation = p_stInputEquipOper}func setOperaNumber(p_mInputOperaNum : Int) {p_mOperaNumber = p_mInputOperaNum}func getOperaNumber() -> Int {return p_mOperaNumber}func setMedicineName(p_stInputMediName : String) {p_stMedicineName = p_stInputMediName}func getMedicineName() -> String {return p_stMedicineName}func setEquipOperation(p_stInputEquipOper : String) {p_stEquipOperation = p_stInputEquipOper}func getEquipOperation() -> String {return p_stEquipOperation}}// 负责人class OperationTaken {var p_arrEquipMemento : [EquipMemento] = []func addMemento (p_obMementoItem : EquipMemento) {p_arrEquipMemento.append(p_obMementoItem)}func getMemento(p_mInputOperaNum : Int) -> EquipMemento {return p_arrEquipMemento[p_mInputOperaNum]}}// 客戶端var mechanic = Mechanic()var operationTaken = OperationTaken()mechanic.setOperaNumber(p_mInputOperaNum : 1)mechanic.setMedicineName(p_stInputMediName : "Aspirin")mechanic.setEquipOperation(p_stInputEquipOper : "Wrap Product")operationTaken.addMemento(p_obMementoItem : mechanic.saveEquipMemento())mechanic.setOperaNumber(p_mInputOperaNum : 2)mechanic.setMedicineName(p_stInputMediName : "Paracetamol")mechanic.setEquipOperation(p_stInputEquipOper : "Ship Product")operationTaken.addMemento(p_obMementoItem : mechanic.saveEquipMemento())print("Current Memento: Number:\(mechanic.getOperaNumber()) Name: \(mechanic.getMedicineName()) Operation: \(mechanic.getEquipOperation())")var previousMemento = operationTaken.getMemento(p_mInputOperaNum : 0)print("Previous Memento: Number:\(previousMemento.getOperaNumber()) Name: \(previousMemento.getMedicineName()) Operation: \(previousMemento.getEquipOperation())")/*Current Memento: Number:2 Name: Paracetamol Operation: Ship ProductPrevious Memento: Number:1 Name: Aspirin Operation: Wrap Product*/

0 0
原创粉丝点击