2017-07-30 32 views
0

擁有一個名爲Nike的類並創建該類的一個實例是我認爲我應該做的以避免代碼重複。這是最聰明的方法嗎?Swift Classes基本D.R.Y原理

enum Condition { 
    case poor 
    case fair 
    case excellent 
} 

class Shoe { 

var color: Condition 
var laces: Condition 

init(color: Condition, laces: Condition) { 
    self.color = color 
    self.laces = laces 
} 

} 

class Nikeone: Shoe { 

var texture: Condition 
var sole: Condition 

init(color: Condition, laces: Condition, texture: Condition, sole: Condition) { 
    self.texture = texture 
    self.sole = sole 
super.init(color: color, laces: laces) 
} 
} 




class NikeTwo: Shoe { 

var texture: Condition 
var sole: Condition 

init(color: Condition, laces: Condition, texture: Condition, sole: Condition) { 
    self.texture = texture 
    self.sole = sole 
    super.init(color: color, laces: laces) 
} 

} 

class NikeThree: Shoe { 

var texture: Condition 
var sole: Condition 

init(color: Condition, laces: Condition, texture: Condition, sole: Condition) { 
    self.texture = texture 
    self.sole = sole 
    super.init(color: color, laces: laces) 
} 
} 

擁有一個名爲Nike的類並創建該類的一個實例是我認爲我應該做的以避免代碼重複。這是最聰明的方法嗎?

+1

是。創建一個耐克課程,並擺脫Nikeone,NikeTwo和NikeThree。然後,您可能會在程序中的某處創建nikeOne,nikeTwo和NikeThree的實例。你的耐克課程看起來和你在這裏的三個完全一樣(它將取代所有三個)。 – Mozahler

回答

0

您最好的方法是按照您的建議創建一個名爲Shoe的基類。

enum Condition { 
    case poor 
    case fair 
    case excellent 
} 

class Shoe { 
    var color: Condition 
    var laces: Condition 

    init(color: Condition, laces: Condition) { 
     self.color = color 
     self.laces = laces 
    } 
} 

然後,您可以創建一個名爲NikeShoe子類:

class NikeShoe: Shoe { 
    var texture: Condition 
    var sole: Condition 

    init(color: Condition, laces: Condition, texture: Condition, sole: Condition) { 
     self.texture = texture 
     self.sole = sole 
     super.init(color: color, laces: laces) 
    } 
} 

你會再創建鞋你想:

let shoeA = NikeShoe(…) 
let shoeB = NikeShoe(…)