今天面试的时候问我面向对象设计中solid是什么,我当时就懵逼啦!

面试后总结了一下,其实很好理解

S:单一职责原则(Single Responsibility Principle, SRP)

意思就是一个类他应该只有他一个的作用,比如一个user对象可以信息管理和信息持久化这就不对,肯定要将这俩功能分给两个类去实现。这样做的好处就是增加代码的复用性,减少类的复杂度,能回答出这些就可以了

O:开放 - 封闭原则(Open-Closed Principle, OCP)

就是一个类的功能不够的时候应该让他去继承或者多实现接口去做功能增强而不是去修改本身代码去增强。这样的好处就是减少对代码的修改,减少引入新bug的风险,增加系统的稳定性

L:里氏替换原则(Liskov Substitution Principle, LSP)

一个子类去继承了一个父类,子类可以替换父类的对象,意思是在任何场景下父类可以出现的地方,子类也一定可以出现

I:接口隔离原则(Interface Segregation Principle, ISP)

一个客户端不应该去被迫依赖他不需要的接口,比如有个A接口里面有eat,sleep,work方法,一个human类和一个机器人类实现了这个A接口,human类可能没事,但是机器人类用不到sleep和eat方法,这样子就是不对的,应该将接口设计为Ieat接口里面有eat方法,Isleep接口里面有sleep方法,Iwork接口有work方法,那么将human实现Ieat,Isleep,Iwork接口,机器人只需要实现Iwork接口就可以了

5. D:依赖倒置原则(Dependency Inversion Principle, DIP)

指的就是高层模块不能依赖底层模块,依赖时候不应该去依赖实现类,而是实现接口或者抽象,后续修改的时候不影响你高层代码

全部评论

相关推荐

1.实现一个useFormHook,支持字段注册、校验、依赖、批量更新。你会怎么设计它的类型系统和数据流2.简历里写的xx观测平台是个什么东西?主要解决了什么问题3.这个MCP工具渲染听起来挺复杂的,能不能具体讲讲它在整个系统里起什么作用?4.你刚才提到用了注册器分发器的设计,那这个改造的出发点是什么5.平时写React组件的时候,有关注过 re-render的触发机制吗6. state、props 改变时,哪些情况组件其实不会重新渲染7.useMemo和useCallback说说这俩 Hook(胡克)的底层原理,为什么有时候用了反而更慢8.如果我现在让你优化一个频繁渲染的列表组件,不允许用虚拟滚动你能想到哪些方案?9. React 18 的 Concurrent Rendering你了解吗,讲一下吧10.它解决了Fiber架构之前哪些痛点?能讲讲优先级调度模型怎么运作的吗11.你知道 React 的 Diff 算法为什么是基于同层比较的吗12.那如果我手动改了 key,会发生什么13.完整描述一下从输入URL到页面渲染出来这整个过程14.浏览器的 Event Loop说一下,如果我有一个 async/await + Promise + setTimeout 混在一起的例子,能按顺序输出结果吗15. 如果我在requestAnimationFrame里触发 setState,React是在这一帧内更新的吗16.页面卡顿通常有哪些来源,你怎么排查性能瓶颈?具体工具有哪些17.你们项目是怎么做状态管理的,如果用Redux和MobX,能不能说说各自的痛点18.假设我们有个超大型的表单页面,状态非常复杂,你会怎么设计状态切分19.你用过React Query或者SWR吗?这类请求缓存库你觉得和Redux有什么本质区别20.如果数据既存在store又在组件state 中,这会带来什么隐患,怎么避免21.做过哪些打包优化,如果打包出来体积过大、首屏白屏时间过长,你会怎么排查22.vite为什么快,esbuild机制是怎么样的24.你来实现一个弹窗系统要求支持多层嵌套弹窗;每个弹窗关闭要恢复上一个滚动状态;支持 ESC键关闭不允许页面闪动,你怎么设计
查看23道真题和解析
点赞 评论 收藏
分享
1.项目介绍。2.美团外卖首页包含大量商家卡片,支持按距离、销量、评分筛选,且商家数量达数千级,如何设计前端渲染方案确保页面流畅滚动?如何优化筛选功能的响应速度和数据加载体验?3.美团到店团购订单页需要展示订单信息、核销状态、退款入口等,如何设计前端状态管理逻辑?用户支付成功后,如何确保页面状态实时更新且数据一致?如何处理支付超时、网络中断等异常场景?4.美团外卖的“骑手实时位置追踪”功能,需要在地图上实时显示骑手位置、配送路线和预计送达时间,前端如何基于WebSocket 实现位置实时同步?如何处理网络波动导致的位置延迟或丢失问题?5.美团首页的“个性化推荐”模块(如推荐商家、优惠活动),需要根据用户行为动态加载内容,如何设计前端缓存策略?如何平衡“推荐内容实时性”和“页面加载速度”?6.美团外卖的“购物车”功能支持添加商品、修改数量、选择规格(如口味、包装),如何设计前端数据结构和交互逻辑?当用户在多端(APP、H5、小程序)登录时,如何保证购物车数据同步?7.美团到店餐饮的“预约排队”功能,需要展示当前排队人数、预计等待时间、叫号提醒,前端如何实现实时更新?如何优化大量用户同时在线时的页面性能和消息推送可靠性?8.美团的“评价晒单”模块包含大量用户评价(文字、图片、视频),支持点赞、回复、筛选,如何设计前端架构实现评价的高效渲染和交互?如何处理地址库数据量大导致的加载缓慢问题?
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务