TP框架面试,编程技巧,目录架构设计

来源:10-1 面试技巧

基操勿六

2019-12-18

关于面向对象编程,子类继承父类,父类引入的其他类,子类怎么可以使用

面试遇到的,却不知道的
1.怎样设计基类更为合适,耦合度方面
2.系统架构方面,怎么样去设计类的基类
3.设计模式应该要怎么去使用
4.MVC中用业务逻辑在哪里编写
5.业务逻辑,控制器,模型,怎么让他们代码复用性更高

具体咨询:
老师我想咨询下你,就是面向对象开发,基类怎么去设计呢,基类是不是要处理请求是否合理,还要去处理后面继承他的子类需要的系统类,基类需要去处理这些吗?还要写公共的方法供子类使用,数据库Db类,Request类,…等等,这些类在基类里面怎么去设计呢,后面继承他的子类不想引入这些东西了

写回答

1回答

慕码人4571193

2020-01-07

1和2的问题:基类的设计,应该考虑到项目中继承这个基类的类大概需要用到的公共方法,或者是公共类,像你后面提到的Db、Request这种频繁使用到的系统类,可以统一放到基类中初始化,供子类调用,基类可以处理请求验证,不过现在大部分在中间件处理请求验证,这个可以了解下。

3:设计模式很多地方都会用到,最直接的比如封装工具类,可以使用单例,注册树,工厂等等的设计模式,凡是在代码中能运到到设计模式的地方都可以考虑使用它,提高程序的健壮和可扩展性。

4:mvc其实再当前主流架构下少了一层,那就是service,正常情况controller只接受请求,model处理数据,service才是处理大量的业务需求逻辑,最终返回给controller,controller将结果返给view。

5:这个主要是代码的封装性,一般做法是将通用的查询写到model中,供每个环节统一调用,尽可能少些重复代码,将重复性的代码抽离出去。

以上是个人见解,欢迎同学继续讨论。

2
3
基操勿六
他们很多人都在基类的初始化方法里面 public function __construct(App $app) { $this->app = $app; $this->request = $this->app->request; // 控制器初始化 $this->initialize(); } 这样写的目的是不用引入了,类似于 Db,Request等的类,这样的写法好吗?
2020-01-10
共3条回复

BAT资深工程师解析Tp5+Tp6底层源码

一门课掌握主流Tp5+最新Tp6框架底层,拥抱新潮流

682 学习 · 145 问题

查看课程