
内功心法有两重,其一最最重要的就是设计模式。有人说这个有啥用啊,如果你写几百一千行以内的小script确实不需要。但是如果你需要写的一个稍微大有点的项目,设计模式太太重要了,是你的必修之路。
01.一个不错的Python设计模式集合
菜鸟哥也是一个在进阶路上的修炼者,最近在GitHub上发现一个非常不错的Python项目,专门讲设计模式的实战的案例,很赞哦,赶紧来看一下。


记得小编在大学的时候读过一本非常经典的设计模式数据,里面有23种招式,这个库竟然收集了30多种设计模式和习惯用法,大概分下面几个类别:
创建型模式:

结构型模式:

行为型模式:

02.代码案例介绍
这么多模式,眼花缭乱,个个都是独孤九剑级别的精妙绝伦的剑法,我们挑选几种模式来看一下它的用法,吸收一波功力。
1).工厂模式:
工厂模式是最简单的一种设计模式,但是在生产环境中其实还经常用到的,记得大学的时候第一个设计模式就是它,念念不忘,必有回想。来看一下源码:


我们初始化设计3个类一个狗,一个猫,还有一个随机的动物类。这个类就是很简单的只有两个函数一个speak,一个__ str__就是打印类的信息。

> >
We have a lovely Cat
It says meow
We have a lovely Dog
It says woof
====================
We have a lovely Dog
It says woof
====================
We have a lovely Cat
It says meow
====================
2).代理模式
代理也是一种非常常见而且好理解的一种设计模式,好比码农A喜欢金融女B,但是不敢向其表白,所以委托张阿姨为代理,代他送礼物给女A,实现这个需求的重点是,男A和女A是不互相直接接触的,都是通过代理实现间接接触。我们来看一下这个设计模式的写法:


>>
Doing the job for admin is requested.
I am doing the job for admin
Doing the job for anonymous is requested.
I can do the job just for ' others '.
I am doing the job for admin
I am doing the job for anonymous
限于篇幅,小编没有一一完全开展所有的设计模式的代码,有志于提高自己功力的同学可以去看一下这个repo,里面的用法和招式需要反复的理解和推敲,这个库的代码量都不大,很好理解。
设计模式需要领悟里面的思想,然后运用在实际的工作中。光看没有用的,看百边道千边,不如动手敲一边。后面还会写一些有趣的设计模式趣味案例。
学编程一定要动手!!内功心法除了设计模式,还有一重是啥,猜猜看,欢迎留言区点评。
目前菜鸟学Python汇聚了30万Python爱好者,累计原创近400篇趣味干货(爬虫,数据分析,算法,面试指南,原创趣味实战,Python游戏,机器学习),欢迎一起学Python,交流指正。
网友评论