這是我個人比較喜歡的風格。
class Player {
init() {
destroyPlayer (player) // {if(player)destroy(player)}
createPlayer (player) // {player = new Player() }
return player;
}
}
另外,Init的SRP應該是指初始化的流程。
假設有一個FactoryPlayer,負責Create與Dispose。
Init就針對整個流程進行管理,詳細實作跟它無關。
init(factoryPlayer) {
factoryPlayer.destroy (player);
factoryPlayer.create (player);
return player;
}
不過以這個例子來說,這樣做就over design,
我個人是以可讀性、簡單的方式為主,
其他的原則不必這麼死守。