色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

為什么都拋棄了constructor

傅智翔2年前16瀏覽0評論

為什么都拋棄了constructor?

個人認為,constructor是oop的糟粕之一。原因在于,constructor本質上是個靜態方法,不是實例方法。所以constructor不能寫在接口里面,也不能動態派發。你在哪里要調用constructor,必須直接寫具體的那個constructor,這是個緊耦合。這也就意味著,你寫單元測試,很難mock掉這部分。

這個問題看著不大,但是你仔細看看有多少技術就是專為解決這個問題而生的?首先,所有依賴注入框架都是為了解決這個贏耦合問題。說白了,用了依賴注入框架,你就基本上不用調用constructor了,換句話說,依賴注入框架就是為了消滅constructor而生的。

再看看設計模式。簡單工廠、抽象工廠是在要實例化的對象上封裝一層,這樣你就不用直接調用constructor了。你constructor不是非實例方法嗎?我把你包裝一層,把你作為包裝類的一個實例方法不就完了?然后工廠方法模式是把constructor改成了模板方法。單例模式、享元也是類似,基本上可以看作工廠模式的特例。然后原型模式,不包裝,直接把constructor變成了一個實例方法:clone。你別調constructor了,直接clone就好。最后,建造者模式,仍然需要constructor,但是它就是用一個最簡單的constructor,然后所有復雜的配置過程都是后面通過實例方法配置的。這樣把大部分constructor的功能都交給實例方法了。

這就可以看出,constructor在實踐中有多不少待見,基本上我們能不用就不用。所以,新的語言,還不如直接把它取消。一旦沒有了constructor,你要構造新實例,那它自動就是工廠模式。但這并不是萬能靈藥哈。取消constructor也會帶來自己的問題,最終還是要看https://www.b5b6.com的靈活使用。

java java混淆器,為什么都拋棄了constructor