设计模式 | Catalog设计模式,抵御业务方需求变动

本文介绍了Catalog设计模式,一种用于优化代码结构和抵御业务逻辑变动的设计模式。通过在类中以方法形式提供多种功能,实现功能的灵活调用,减少需求变更对代码的影响。文章详细讲解了基础版本、实例版本和class及static版本的实现,并探讨了适用场景和使用方法。
摘要由CSDN通过智能技术生成

大家好,这是一个全新的专题——设计模式

其实可以选择的专题还有好几个,为什么选择设计模式呢?原因也很简单,首先是设计模式简单、易学。干货的文章固然好,但是普适性往往不强。另外一个很重要的点就是设计模式学习的好处非常明显,如果学得好的话,会觉得自己的编码能力有了质的突破。这并不是夸大其词,很多人包括我,在学习的时候都曾经有过这种感觉。

设计模式简介

设计模式这个词我想大家应该都听说过,但是它究竟是什么意思可能很多人并不清楚。其实设计模式就是一种经验,就是一种前人总结出来反复印证过可以解决各种问题或者是做出各种优化的代码设计经验

以上是教科书当中的内容,下面是我个人的理解,在我看来设计模式主要有两种用途,第一种是优化我们的代码结构,让我们的代码更加健壮,设计更加合理。我们读大牛的代码常常惊叹,同样的功能他怎么这么简单就实现了,这个设计太巧妙了。设计模式就是这些令人惊叹的精彩设计的总结。第二种用途相对功利一些,是为了抵抗业务逻辑变动。这一点如果你还没有毕业的话,可能理解不深刻。在职场当中程序员最讨厌什么?其中很重要的一个点就是业务逻辑的变动,昨天才说了这里要这么设计,突然过了两天就改了。或者是过了几天突然增加了一个之前没有想到的需求。而我们使用设计模式,一定程度上可以抵御这样的变更,尽量减少需求变动带来代码的更改。

简单总结一下,学习设计模式一方面可以让我们的代码能力更强写出来更优雅更牛的代码,另一方面可以帮助我们应对职场中需求,提升我们的表现和产出。

相比于这些好处最最重要的是,它的难度并不大,我们学习的成本不高。所以这是一件一本万利的事情,说是程序员进阶的必备技能也不为过。前面也说了设计模式是代码经验的总结和提炼,所以它也和语言特性有关,不同的语言实现出来的设计模式以及能够实现的设计模式也不一样。主流一般流行Java来实现设计模式,不过由于我们之前没有介绍过Java相关的语法,我们这里选择使用Python的设计模式。代码参考借鉴了github中设计模式热门repo:patterns,链接:https://github.com/faif/python-patterns

好了,废话不多说,我们开始今天的内容。

目录模式

今天要介绍的设计模式叫做Catalog,翻译过来是目录的意思。我没有找到很好的中文资料,可能也许是因为Java当中不支持这种模式,而中文主流的设计模式都是Java为基础的。

目录设计模式的核心逻辑在于我们在一个类当中以方法的形式提供许多种功能,我们将这些功能以目录的形式存储在一个dict当中。我们在创建实例的时候通过不同的参数获取不同的功能,使用方在使用的时候不感知具体的参数。

这种设计模式有几种实现方式,我们一个一个来看。

代码示例

基础版本

class Catalog:
    def __init__(self, param):
        self._static_method_class = {
   'param_value_1': self._static_method_1, 'param_value_2': self._static_method_2}

        if param in self._static_method_class:
            self.param = param
        else:
            raise ValueError('Invalid value for param: {0}'.format(param))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值