简单工厂模式
来源:互联网 发布:怎么做个软件 编辑:程序博客网 时间:2024/06/05 14:11
最近用的flask框架写了个网站,目前要在app上也在同步开发,服务端的一些业务逻辑是相同的,只是有些行为比如返回结果不同,web上需要返回一个跳转的url,app上需要返回json格式的数据,这种情况用简单工厂模式比较合适,小文章,直接上代码:
基类,以login为例,校验用户名密码,返回return code和错误信息
class UserService(object): def __int__(self): return def login_post(self): form = CMSLoginForm(flask.request.form) if form.validate(): phone = form.phone.data password = form.password.data user = CMSUser.query.filter_by(phone=phone).first() remember = form.remember.data if user and user.check_pwd(password): flask.session[CMS_SESSION_ID] = user.id if remember: flask.session.permanent = True else: flask.session.permanent = False return HttpCode.ok,'' else: return HttpCode.paramserror, u'邮箱或密码错误' else: return HttpCode.paramserror, form.get_error()
子类继承UserService,先调用父类完成校验,然后根据返回码,返回不同的结果,url跳转或是json格式的结果
class WebUser(UserService): def __int__(self): return def login_post(self): retcode,message = super(WebUser, self).login_post() if retcode == HttpCode.ok: return redirect(url_for('cms.cms_index')) else: return render_template('cms/login.html',messages= message)
class MobileUser(UserService): def __int__(self): return def login_post(self): retcode, message = super(MobileUser, self).login_post() if retcode == HttpCode.ok: return json_result() else: return json_params_error(message=message)
使用的时候,先初始化两个工厂类
webuser = WebUser()mobileuser = MobileUser()
在视图函数中,根据需求调用相应的对象即可
from service_helper.user_service import webuser as userhelper@bp.route('/login/',methods=['GET','POST'])def login(): if request.method == 'GET': return flask.render_template('cms/login.html') if request.method == 'POST': return userhelper.login_post()
很简单,很实用,易扩展
阅读全文
0 0
- 工厂模式-简单工厂
- 工厂模式-简单工厂
- 工厂模式-简单工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 工厂模式-简单工厂模式
- 简单工厂模式,工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂、工厂模式、抽象工厂模式
- 简单工厂&工厂模式&抽象工厂模式
- 简单工厂和工厂模式
- 简单工厂和工厂模式
- 1,工厂模式--简单工厂
- 简单工厂和工厂模式
- 简单工厂,工厂模式,抽象工厂
- 简单工厂,工厂模式,抽象工厂
- 简单工厂、工厂方法、抽象工厂模式
- 简单工厂、工厂模式和抽象工厂
- JAVA多线程技术学习笔记(一)——多线程基本概念
- sql基础语句4
- 461. Hamming Distance
- MySQL重置root密码方法
- MyBatis Sql语句中的转义字符
- 简单工厂模式
- 从零开始学习OpenCL开发(一)架构
- 关于360浏览器模式的处理
- 组件的下载地址
- 全局热键
- 教你在APP中嵌入翻译功能,不借助第三方软件
- Android TV 开发简介
- 录音机的实现
- 11、Spring Cloud构建微服务架构