Guest User

Untitled

a guest
Jul 20th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. //: Playground - noun: a place where people can play
  2.  
  3. import UIKit
  4.  
  5. protocol Human {
  6. var name : String {get set}
  7.  
  8. func run()
  9. func eat()
  10. func sleep()
  11. }
  12.  
  13. class Soldier : Human{
  14. var name: String
  15.  
  16. init(SoldierName soldiername : String) {
  17. self.name = soldiername
  18. }
  19.  
  20. func run() {
  21. print("soldier \(name) is running")
  22. }
  23.  
  24. func eat() {
  25. print("soldider \(name) is eating")
  26. }
  27.  
  28. func sleep() {
  29. print("soldider \(name) is sleeping")
  30. }
  31. }
  32.  
  33. class Civilian : Human {
  34. var name: String
  35.  
  36. init(CivilianName civilianName : String) {
  37. self.name = civilianName
  38. }
  39.  
  40. func run() {
  41. print("\(name) is running")
  42. }
  43.  
  44. func eat() {
  45. print("\(name) is eating")
  46. }
  47.  
  48. func sleep() {
  49. print("\(name) is sleeping")
  50. }
  51. }
  52.  
  53. enum HumanTypes{
  54. case Soldier
  55. case Civilian
  56. }
  57.  
  58. class HumanFactory{
  59. private static var sharedHumanFactory = HumanFactory()
  60.  
  61. class func shared() -> HumanFactory {
  62. return sharedHumanFactory
  63. }
  64.  
  65. func getHuman(HumanType humanType : HumanTypes, HumanName humanName : String)->Human{
  66. switch humanType {
  67. case .Soldier:
  68. return Soldier(SoldierName: humanName)
  69. case .Civilian:
  70. return Civilian(CivilianName: humanName)
  71. }
  72. }
  73. }
  74.  
  75. let soldier = HumanFactory.shared().getHuman(HumanType: .Soldier, HumanName: "Jay")
  76. soldier.sleep()
  77.  
  78. let civilian = HumanFactory.shared().getHuman(HumanType: .Civilian, HumanName: "Saman")
  79. civilian.run()
Add Comment
Please, Sign In to add comment