为什么要考虑把代码抽象化, 它到底比硬编码好在哪?
把代码抽象化就好比发工资,大家发了工资后要做什么,肯定是不一样的,有的人要上缴老婆,有的人要还贷款,有的人要给父母家用,等等。
如果我们直接去定死了发了工资就干什么,那肯定不适用所有人的情况;而且一般情况下,我们也只需要知道工资发下来就行了,至于工资拿来干嘛,那根本不是别人关心的事。
转化成代码的话,那我们只要规定好每个工作人员都有个拿到工资的接口,至于接口里面具体要实现什么样的功能,每个人自己去定义。
硬编码:
从现实的角度来看,不可能有这样的公司(那你们这些程序狗怎么能写出这么病丧的程序);从程序的角度来看,无法协同开发、模块化,程序维护、测试都非常困难。
抽象层:
如果我们直接去定死了发了工资就干什么,那肯定不适用所有人的情况;而且一般情况下,我们也只需要知道工资发下来就行了,至于工资拿来干嘛,那根本不是别人关心的事。
转化成代码的话,那我们只要规定好每个工作人员都有个拿到工资的接口,至于接口里面具体要实现什么样的功能,每个人自己去定义。
硬编码:
<?php class Employee1 implements GetPaid { public function comfortWife() {...} public function repayTheLoan() {...} public function domesticExpenses() {...} } class Employee2 implements GetPaid { public function comfortWife() {} public function domesticExpenses() {} } class Employee3 implements GetPaid { public function repayTheLoan() {} } $employee1 = new Employee1(); $employee1-> comfortWife(); $employee1-> repayTheLoan(); $employee1-> domesticExpenses(); $employee2 = new Employee2(); $employee2-> comfortWife(); $employee2-> domesticExpenses(); $employee3 = new Employee3(); $employee3-> repayTheLoan();接口不统一,主流程还要去关心每个员工到底拿到工资去干嘛(公司管的真宽啊),万一要增、删、改功能,还要通知注流程去修改(不知道你们有没经常写申请走流程。。。不敢想),这样的员工,严重生活不能自理;这样的公司,就像一个庞然大物一样,什么都要管,做什么事都很麻烦,管理成本都是指数级的。
从现实的角度来看,不可能有这样的公司(那你们这些程序狗怎么能写出这么病丧的程序);从程序的角度来看,无法协同开发、模块化,程序维护、测试都非常困难。
抽象层:
<?php class Employee1 implements GetPaid { public function getPaid() { comfortWife(); repayTheLoan(); domesticExpenses(); } } class Employee2 implements GetPaid { public function getPaid() { comfortWife(); domesticExpenses(); } } class Employee3 implements GetPaid { public function getPaid() { repayTheLoan(); } } $employeeList = [new Employee1,new Employee2,new Employee3,]; foreach($employeeList as $eachEmployee) { $eachEmployee->getPaid(); }
我们发现主流程根本不需要关心每个人拿完工资干啥,只要发工资就是了, 每个员工自己该干嘛干嘛;
对于想干的事想加就加,想减就减,想改就改,不会影响别人,主流程根本不用改。
版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。
发表评论: