From 08b22191f96ad52a8cee55653cf3b87b952adf02 Mon Sep 17 00:00:00 2001 From: lina0322 Date: Sat, 9 Jan 2021 21:52:24 +0900 Subject: [PATCH] =?UTF-8?q?Refactor:=20main=ED=95=A8=EC=88=98=20=EB=82=B4?= =?UTF-8?q?=EB=B6=80=EC=97=90=20=EB=B0=98=EB=B3=B5=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EB=B0=96=EC=9C=BC=EB=A1=9C=20=EA=BA=BC?= =?UTF-8?q?=EB=83=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bank.swift | 11 +++----- .../BankManagerConsoleApp/Dashboard.swift | 4 +++ .../BankManagerConsoleApp/Enum.swift | 2 +- .../BankManagerConsoleApp/Teller.swift | 2 -- .../BankManagerConsoleApp/main.swift | 26 ++++++++++++++----- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/Bank.swift b/Bank.swift index 151df70d4..48883ea23 100644 --- a/Bank.swift +++ b/Bank.swift @@ -11,17 +11,12 @@ final class Bank { private var tellers: [Teller] = [] private var finishedClientNumber = 0 private var businessTime: TimeInterval? - - func printMenu() { - print(BankMenu.description, terminator: " ") - } - + func operateBank(teller: Int, client: [Client]) { - var openTime = Date() + let openTime = Date() - openTime = Date() - clients = client initTellers(teller) + clients = client assignBusinessToTeller() businessTime = Date().timeIntervalSince(openTime) Dashboard.printCloseMessage(finishedClientNumber, businessTime) diff --git a/BankManagerConsoleApp/BankManagerConsoleApp/Dashboard.swift b/BankManagerConsoleApp/BankManagerConsoleApp/Dashboard.swift index f8a305ffa..22cc1a396 100644 --- a/BankManagerConsoleApp/BankManagerConsoleApp/Dashboard.swift +++ b/BankManagerConsoleApp/BankManagerConsoleApp/Dashboard.swift @@ -8,6 +8,10 @@ import Foundation class Dashboard { + static func printMenu() { + print(Menu.description, terminator: " ") + } + static func printStatus(for client: Client, about message: Message) { let message = String(format: message.rawValue, client.waitingNumber) print(message) diff --git a/BankManagerConsoleApp/BankManagerConsoleApp/Enum.swift b/BankManagerConsoleApp/BankManagerConsoleApp/Enum.swift index 0b9cc4502..3dc67ee44 100644 --- a/BankManagerConsoleApp/BankManagerConsoleApp/Enum.swift +++ b/BankManagerConsoleApp/BankManagerConsoleApp/Enum.swift @@ -7,7 +7,7 @@ import Foundation -enum BankMenu: String { +enum Menu: String { case start = "1" case end = "2" diff --git a/BankManagerConsoleApp/BankManagerConsoleApp/Teller.swift b/BankManagerConsoleApp/BankManagerConsoleApp/Teller.swift index 7fc70712e..4dd014a10 100644 --- a/BankManagerConsoleApp/BankManagerConsoleApp/Teller.swift +++ b/BankManagerConsoleApp/BankManagerConsoleApp/Teller.swift @@ -10,7 +10,6 @@ import Foundation final class Teller { private var windowNumber: Int var workingQueue: DispatchQueue - var workingHours: TimeInterval = 0 private var isWorking: Bool = false var isNotWorking: Bool { return !isWorking @@ -27,7 +26,6 @@ final class Teller { isWorking = true Dashboard.printStatus(for: client, about: .tellerStart) Thread.sleep(forTimeInterval: needTimeToWork) - workingHours += needTimeToWork Dashboard.printStatus(for: client, about: .tellerFinish) isWorking = false } diff --git a/BankManagerConsoleApp/BankManagerConsoleApp/main.swift b/BankManagerConsoleApp/BankManagerConsoleApp/main.swift index 882cae38d..80d6c8f7c 100644 --- a/BankManagerConsoleApp/BankManagerConsoleApp/main.swift +++ b/BankManagerConsoleApp/BankManagerConsoleApp/main.swift @@ -6,13 +6,25 @@ import Foundation +private func randomNumber(from minNumber: Int = 0, to maxNumber: Int) -> Int { + return Int.random(in: minNumber...maxNumber) +} + +private func initClients(_ number: Int) -> [Client]? { + var clients: [Client] = [] + + for waitingNumber in 1...number { + clients.append(Client(waitingNumber: waitingNumber)) + } + return clients +} + private func main() { let bank = Bank() - let tellerNumber = 1 + let tellerNumber = 3 + let maxClientNumber = 30 + let minClientNumber = 10 var isContinue = true - var randomNumber: Int { - return Int.random(in: 10...30) - } func initClients(_ number: Int) -> [Client] { var clients: [Client] = [] @@ -24,16 +36,16 @@ private func main() { } while isContinue { - bank.printMenu() + Dashboard.printMenu() - guard let input = readLine(), let command = BankMenu(rawValue: input) else { + guard let input = readLine(), let command = Menu(rawValue: input) else { print(BankError.wrongInput.description) continue } switch command { case .start: - let clients = initClients(randomNumber) + let clients = initClients(randomNumber(from: minClientNumber, to: maxClientNumber)) bank.operateBank(teller: tellerNumber, client: clients) case .end: isContinue = false