zoukankan      html  css  js  c++  java
  • 2021-01-30 python策略模式实践

    需求场景:

    给定多种路径的http链接,解析不同url的参数,根据参数获取数据,组织数据发送到特定接口。

    实现思路:

    处理不同url的过程有共同点,如发送数据的格式、接收接口的接口相同,都需要从url解析参数,获取、组织数据都需要使用数据库连接资源,

    不同点是获取、组织数据的逻辑不同。

    因此设计一个父类,不同的url设计一个对应的子类。

    父类:

    1.持有数据库连接,同时实现数据库连接释放方法(若子类较多,该部分可以单独拆分,避免浪费资源)

    2.抽象一个匹配接口,传入url,返回是否由当前策略处理,具体由子类实现

    2.抽象一个组织数据接口,具体由子类实现

    3.发送数据接口,调用组织数据接口,完成数据发送

    子类

    1.实现匹配接口,正则表达式匹配url

    2.实现组织数据接口,实现获取和组织数据的逻辑

    为了方便使用这些不同的策略,设计一个上下文类持有这些不同的子类

    上下文类:

    1.持有父类引用指向不同子类实例的列表

    2.实现选择策略接口,传入一个url, 遍历子类实例列表,调用其匹配接口,若匹配则返回该子类实例

    3.实现资源释放接口,遍历子类实例列表,分别调用其释放数据库连接方法

    处理的时候构造一个上下文对象,处理结束后调用资源释放接口即可。

    若按过程方法去实现这个需求,肯定会有多个if-else逻辑,对后来人维护不友好。

    简单抽象一下,不用手写多个if-else的判断逻辑,增加删除一个策略也比较简单,代码维护相对容易。

  • 相关阅读:
    Mybatis的动态sql以及分页
    Mybatis入门
    使用java代码操作Redis
    Redis安装和基本操作
    idea安装以及使用
    卢卡斯定理 Lucas (p为素数)
    三分/优选法(黄金分割法)求单峰函数极值
    缩点tarjan
    tarjan 求割点
    tarjan
  • 原文地址:https://www.cnblogs.com/imgax/p/14348985.html
Copyright © 2011-2022 走看看