Skip to content

Instantly share code, notes, and snippets.

@takaheraw
Created October 18, 2015 08:35
Show Gist options
  • Save takaheraw/a065c590e65e86c18be0 to your computer and use it in GitHub Desktop.
Save takaheraw/a065c590e65e86c18be0 to your computer and use it in GitHub Desktop.
class DataItem {
enum ItemType : String {
case Email = "Email Address"
case Phone = "Telephone Number"
case Card = "Credit Card Number"
}
var type:ItemType
var data:String
init(type:ItemType, data:String) {
self.type = type
self.data = data
}
}
final class Logger {
private var data = [String]()
private init() {
}
func log(msg:String) {
data.append(msg)
}
func printLog() {
for msg in data {
print("Log; \(msg)")
}
}
}
let globalLogger = Logger()
class BackupServer {
let name:String
private var data = [DataItem]()
init(name:String) {
self.name = name
globalLogger.log("Created new server \(name)")
}
func backup(item:DataItem) {
data.append(item)
globalLogger.log("\(name) backed up item of type \(item.type.rawValue)")
}
func getData() -> [DataItem] {
return data
}
}
var server = BackupServer(name: "Server#1")
server.backup(DataItem(type: DataItem.ItemType.Email, data: "[email protected]"))
server.backup(DataItem(type: DataItem.ItemType.Phone, data: "[email protected]"))
globalLogger.log("Backed up 2 items to \(server.name)")
var other = BackupServer(name: "Server#2")
other.backup(DataItem(type: DataItem.ItemType.Card, data: "[email protected]"))
globalLogger.log("Backed up 1 items to \(other.name)")
globalLogger.printLog()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment