2017-07-30 15 views
0

クラスのインスタンスを作成してクラスを作成することは、コードの重複を避けるために行うべきことです。それが最もスマートなアプローチですか?スウィフトクラス基本的な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) 
} 
} 

ナイキと呼ばれるクラスを持つクラスのインスタンスを作成するには、私はコードの重複を避けるためにやるべきだと思うものです。それが最もスマートなアプローチですか?

+1

はい。 Nikeクラスを作成し、Nikeone、NikeTwo、NikeThreeを削除します。あなたはおそらくあなたのプログラムのどこかにnikeOne、nikeTwo、NikeThreeのインスタンスを作成します。あなたのNikeクラスは、ここにある3つのクラスとまったく同じように見えます(3つのクラスをすべて置き換えます)。 – 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(…) 
関連する問題