wordpress本地网站搭建整套课程,网站出现风险如何处理方法,网上服装商城网站代码,枣庄网站建设哪家公司好如果我说#xff0c;要写好代码#xff0c;必须违背这些原则#xff0c;我想所有人都会骂#xff1a;疯子、胡说八道、哗众取宠#xff0c;找打#xff01;
以前我也会骂那个疯子#xff0c;但现在不会#xff0c;而且我会肯定地、负责任地说#xff1a;这是真的要写好代码必须违背这些原则我想所有人都会骂疯子、胡说八道、哗众取宠找打
以前我也会骂那个疯子但现在不会而且我会肯定地、负责任地说这是真的
首先我们要知道这六大原则是什么。
六大设计原则主要是指
单一职责原则Single Responsibility Principle 开闭原则Open Closed Principle 里氏替换原则Liskov Substitution Principle 迪米特法则Law of Demeter又叫“最少知道法则” 接口隔离原则Interface Segregation Principle 依赖倒置原则Dependence Inversion Principle。 也就是我们说的SOLID原则。但从来没有人告诉我们这六大原则之间是什么关系他们之间能同时满足吗
要知道任何事物都不是孤立地存在的它总是同周围其他事物相互联系着、相互依赖着、相互制约着、相互作用着。
这些原则之间同样也有联系也是有主次关系。其中开闭原则是这之中最重要最根本的一个原则是系统架构的根本目的其他五个原则是指导服务于开闭原则。开闭原则是我们的根本目的一切要从开闭原则出发它是唯一判断标准。
这五个指导原则的共同目的是一样的都是为了达成系统对扩展开放对修改关闭。但在实际中我们要想做到开闭就不得不去违背这五个原则。因为开闭是根本要求而五个原则又不是唯一的实现途径必然导致其他方式跟他们起了冲突。如果为了开闭而要违背原则我们也不得不去违背否则就本末倒置了。
首先是迪米特法则该法则表明一个对象应该对其他对象有最少的了解。通俗地讲一个类应该对自己需要耦合或调用的类知道得最少。
那我们要如何做到最少呢常用的方法就是建立一个中介类封装复杂的操作但这只是把复杂的东西转移到中介类了中介类就会违背了这个原则。当然我们可以在中介类里面再封装其他中介类一层层封装下去但这造成的一个后果就是系统中存在大量的中介类这些类之所以存在完全是为了传递类之间的相互调用关系。就会出现《重构》说的坏味道过度耦合的消息链(Message Chains)。出现坏味道往往无法满足开闭原则。
为了满足开闭原则某些情况下我们就必须做一个取舍中介类要几个要在哪一个中介类去违背它于是我们就得到一个看似矛盾的结论为了满足迪米特法则而不得不去违背它
迪米特法则跟单一职责原则也是冲突的单一职责说的是一个类应该有且只有一个改变的原因。也就是一个类只负责一个功能但我们的业务场景往往是需要多个功能配合使用的这些功能粒度如果拆的很细我们为了完成业务功能就必须要对很多的类有了解。可以看出单一职责跟中介类是矛盾的而中介类的目的又是为了满足迪米特法则进而得出迪米特法则跟单一职责也是矛盾的。
我们往往要选择违背单一职责可以负责任肯定地说单一职责越得到充分的体现违背开闭原则的地方就越多。
首先单一职责原则会引起类的剧增给维护带来非常多的麻烦。其次本来一个类可以实现的行为硬要拆成两个类然后再使用聚合或组合的方式耦合在一起人为制造了系统的复杂性。最后一个类究竟拆到什么程度才算单一往往是把握不住的里面的水很深如果为了满足这个原则强行去考虑只会适得其反捡了芝麻丢了西瓜。