设计模式入门

设计模式是软件开发的时候,经常会用到的高频知识。是开发框架和业务代码必须知道和熟练使用的东西。

从一个例子开始

现在要设计一个选择器,前提是根据输入的请求的某个字段,路由到某段功能。
if(condition){功能1}
else if(condition){功能2}
else if(condition){功能3}
else{功能4}

这样是最简单的写法。

这时候,假设condition比较多,而且考虑到扩展性,并且对修改闭合的原则,需要对这个代码进行修改。

按照领域进行划分

按照内聚的设计原则,对不同域的内容进行划分。对conditoin进行设置的领域,可以叫做设置域或定义域。
实际执行condition的领域叫做运行域。

模板模式

在运行域,用模板模式进行改造:
selector.select();
execute();

工厂模式、策略模式

在定义域,用工厂模式和策略模式进行改造:
选择的规则,抽象成一个个策略。业务人员来实现这些策略。
同时生成策略的过程可以用工厂模式进行封装。

结果

这样,一个简单的选择过程,就可以使用设计模式设计成符合设计原则,有设计感的模块。

扩展:多结果

假设并不只是选择出一个结果,而是选择出多个结果,该如何设计?

把选择出结果这个过程同样抽象成一个策略,这个策略由业务人员提供。通过信息经过pipeline后,出来的是一个list。然后这个list再次通过策略,得到某一个或多个结果。

扩展:多维

如果是有二层或多层选择,该如何设计?

首要的关键是把选择逻辑和执行逻辑分离。所以多维的选择,应该是内聚的一个模块。
然后,参考多维坐标的概念,做一个根据一个多维数据确定一个数据点的功能,每个数据点对应一个业务实现的程序(execute方法)。这样就是一个通用的多维选择器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值