![ff33c80f3b5e9f3470f00f5d0a496c16.png](https://i-blog.csdnimg.cn/blog_migrate/959b4bc557cc6b9ccd226798723f7b08.jpeg)
本文为在开发过程中进行的思考,通过在开发过程中发现的接口更好的开发方式,总结成技术分享分享给大家,使大家在开发过程中能够更好的运用面向对象编程的思维。
面试中面试官会问到,什么是面向对象编程,你肯定会回答封装,继承,多态。
说实话,封装,继承,多态,虽然只有 6 个字,但是很多写代码写到转行都没有理解。
面试官这么问你,肯定不是仅仅想听你说出这三个词,而是想看看你是否真的理解面向对象的思想,考察的是遇见问题时候如何面向对象分析问题,抽丝剥茧,把业务理清,建立模型及接口,最终把复杂问题条理清晰的分解为一个个较为简单的且有意义模块,再用一行行的代码实现这些模型,解决问题。[1]
本文为我自己在开发过程中对接口开发方式的思考,以及引入了面向对象编程的开发方式。
一种较为优秀的接口开发方式----面向对象编程
举例: 我们在开发**活动中
需要开发两个接口
- 获取用户步数
- 用户使用/获得步数
一般面向过程编程开发方式为写两个接口,在common文件中创建两个函数,各用于获取用户步数与用户使用步数
def get_user_step(user_id):
# 1. 获取用户步数
# 2. 返回
def operate_user_step():
# 1. 获取用户步数
# 2. 操作用户步数
# 3. 返回
但在长期的开发过程中,这种方式有两个弊端
- 冗余代码(如重复的获取用户步数操作)
- 维护时文件函数过多不方便查找
但我们如果使用一种 面向对象编程的开发方式(设计模式)
则可避免这一点
将用户步数视为一个“对象”
所有操作都为对这个对象进行操作
class Step():
"""
奖品对象,完成两个功能
1. 获取用户步数
2. 向前走,消耗步数
3. 增加用户步数
"""
def __init__(self, user_id):
# 获取用户步数
@property
def get(self) -> int:
return self.step_count
def operate(self, _type: str) -> bool:
"""
:param _type: "USE" 消耗步数 "ADD" 增加步数
:return:
"""
# 操作用户步数
return True
其中该对象在获取步数与操作步数的时候
获取用户当前步数的代码会在对象实例化的时候进行查询
从而成为对象的公共属性
我们在进行获取与操作步数的时候不用重复这一段代码
在维护代码的同时,需要操作步数时,只需要到对应的对象下去看
优势在于:
- 我们在接到需求时,我们可以通过需求来创建若干对象,所有接口所实现的功能均基于四个对象处理,方便开发,方便维护
- 对每个对象实现不同方法,用于满足需求
- 对象也可以做数据库事务查询,维护数据统一性
参考
- ^引用于v2ex https://www.v2ex.com/t/570873#reply30