设计模式:
设计模式是由GoF(Gang of Four)首先提出的, 设计模式就是解决特定问题的解决方案. 它本身是一种发现总结, 而不是一种发明.
GoF在设计模式的书中给出了23中涉及模式, 共分为三大类:
- 创建型模式
- 结构型模式
- 行为型模式
工厂模式:
工厂模式, 在于提供一个"工厂", 负责创建其他类型对象, 客户端使用某些参数调用此方法之后, 工厂会据此创建所需类型的对象, 然后将它们返回给客户端.
简单工厂模式, 允许接口创建对象, 但不会暴露对象的创建逻辑.
通俗点:
提供一个工厂类,来创建一种类对象,不能创建其他类对象,使用者只需要传
递工厂类需要的参数即可返回想要的结果,不用关心工厂类的具体实现
工厂模式应用
-
定义工厂方法
-
def create_flask_app(config): # 定义工厂方法 app = Flask(__name__) # 从配置对象中加载 app.config.from_object(config) return app ```
-
-
创建接口文件
-
# 导入工厂方法 from factory_flask import create_flask_app from settings import ConnectMysql app = create_flask_app(ConnectMysql) # 设置路由与视图 @app.route('/') def index(): mysql_port = app.config.get('MYSQL_HOST') print(mysql_port) return 'Hello Flask' # 启动服务 if __name__ == '__main__': # url_map:获取所有路由 print(app.url_map) app.run() ```
-
路由
# 默认的参数类型是str
@app.route('/book/<bid>')
@app.route('/book/<int:bid>')
路径转换器
# 路径转换器的值可以传递一个路由,值是str类型
@app.route('/book/<path:bid>/')
自定义转换器
from werkzeug.routing import BaseConverter
class PhoneConverter(BaseConverter):
# 自定义转换器的路由配置规则
# 重写regex
regex = r'1[3-9]\d{9}'
# 把转换器写入到url__map
# 给自定义的转化器指定使用的key
app.url_map.converters['mobile']=PhoneConverter
# 使用案例
@app.route('/user/<mobile:phone>')