• Stars
    star
    194
  • Rank 200,219 (Top 4 %)
  • Language
    Python
  • Created about 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

最全python36种设计模式。opp面向过程和oop面向对象的极致使用方式,一切编码思维和设计想法逃不出这36计。
编程时候,设计新的模块或者项目,下不了笔,要思考三天三夜怎么设计,主要是没学设计模式。

编程时候,有时候脑子一瞬间感觉 灵光出现,觉得这么写台好了太合适了,这样写节约代码 扩展高,瞬间感到这是个天才想法,
主要是由于没有专门学习设计模式,只能偶尔灵机一动,形成不了一套稳定的输出,所以才会有这种突然感觉某个代码设计是天才设计这种感受。
不要纠结是23种还是36种了,有细分的,举个例子 观察者模式和发布订阅模式,是有了少许变化,多了解一种总没啥坏处。
为什么是36种,因为是摘自菜鸟教程或者w3cschool网站,这两个网站都是36种,包含了j2ee模式,多了解没坏处。
不愿意学oop和设计模式,天天加班写bug解bug无限复制粘贴扣字老代码写新代码,这种写法瞎忙也没用。
比如韩信3万军队歼灭70万大军,靠的不是大无畏的胡乱冲刺,而是因为韩信看了孙子兵法36计兵书,靠的是策略,所以我要称之为36种设计模式。

设计模式十分有用,是通过大量实践对比得出来的,比如和自己国王写代码的纵向对比总结,和公司n多个现有代码项目的横向对比总结得出来的结论。

使用设计模式或oop转化公式,能使几乎任意项目代码减少50%至90%行,编码速度快一倍。
扩展性和维护性提高数十倍,bug减少5倍。
如果是使用极端纯面向过程(或者加入了少量无效废物类)的方式来写python代码,
我不用看,就知道一定很low。

一些介绍

学弟啊,你代码能不能不要写得这么烂 https://www.toutiao.com/a6739759206997426696/

面向对象和面向过程分别是什么? https://www.zhihu.com/question/28790424

如何通俗易懂地举例说明「面向对象」和「面向过程」有什么区别? https://www.zhihu.com/question/27468564

对于程序员来说,设计模式和算法哪个更重要呢? https://www.zhihu.com/question/25432487

为什么我们需要学习(设计)模式 https://zhuanlan.zhihu.com/p/19835717

介绍神级别通用固定oop转化公式,写代码下笔时候行云流水。

使用这个公式,不需要背设计模式,不需要每次写新文件先花几天想破头皮怎么设计布局代码成为高扩展和高维护。

常见问题回答

1、老是纠结类和函数?类和函数有什么区别。

问函数和类的区别,这简直是牛头不对马嘴的伪问题。
函数和方法可以比区别。函数和类比区别就是问 人和上班 、猪和吃东西 有什么区别一样,简直是没搞清楚比较维度。

类和模块可以比,类主要优势是多实例,多个实例的属性是互不干扰的,每个实例的多个方法都可以直接访问实例属性(成员变量)。
面向过程是一直很low的在函数间把本应该在oop中声明为成员变量的东西弄成在函数间反复传参和return。

类 + 方法 + 实例属性(成员变量)  约等于    模块 + 函数 + 全局变量
1)对于类,类的无数个实例化对象的实例属性(成员变量)是互不干扰的,天然的多实例。
2)对于模块 python的模块在当前解释器中是唯一的,import 一万次 xx.py,xx模块都是唯一的指向同一个地方,
所以使用全局变量 加 函数逇设计方式是行不通的,xx模块是唯一的,xx模块的a 变量 b变量也是惟一的,
所以老是需要设计成吧a和b弄成传参和return而不是全局变量来解决全局变量只有一份的问题。

所以如果需要多实例,类 + 方法 + 实例属性(成员变量) 远好于 模块 + 函数 + 全局变量。
模块 + 函数 + 全局变量 由于要模拟多实例,使全局变量(状态) 不唯一,大部分情况下需要写成 函数反复传参和反复return。
这种面向过程的封装的写法曲折程度毫无疑问被oop暴击了,面向过程导致写代码慢想破头皮搞一堆传参和return。何况oop不只有封装还有继承和多态。

能写类的人100%就能写函数,能写函数的人不一定能写类(说的是真oop的类,排除无效废物面向过程滑稽类),这是不可逆的。

2、 不学设计模式的坏处

只爱学python语法,只学怎么使用if else break, 学字典 列表怎么用,代码就很low
写代码很慢,设计慢,想的慢,打字慢
代码不可维护,没有高扩展性
写新文件要想破头皮三天三夜才能开始下笔。

More Repositories

1

funboost

pip install funboost,python全功能分布式函数调度框架,。支持python所有类型的并发模式和全球一切知名消息队列中间件,python函数加速器,框架包罗万象,一统编程思维,兼容50% python编程业务场景,适用范围广。只需要一行代码即可分布式执行python一切函数。
Python
462
star
2

distributed_framework

pip install function_scheduling_distributed_framework,python通用分布式函数调度框架。python万能超高并发神器,改成funboost框架名字,停止更新,只更新funboost框架。
Python
321
star
3

nb_log

pip install nb_log 各种日志handler和自动转化项目的任意print的效果。日志自动彩色炫酷,可点击控制台的日志自动精确跳转到pycharm的文件和行号。文件日志多进程切割安全。在10个最重要方面全方位超过loguru
Python
309
star
4

proxypool_framework

pip install proxypool_framework 史上最强的ip代理池。通用极简代理池架构,适合维护任意免费和收费 ip落地代理池。极简代理池架构附带20+免费代理网站。能够确保任意时刻,数据库中可用优质代理数量300+以上,数量远远超过任意收费代理商,通过参数简单调优质量超过绝大部分部分收费代理商。
Python
61
star
5

pythonpathdemo

用专门的项目说明掌握python的 PYTHONPATH的重要性;说明窗口会话临时环境变量和永久性环境变量区别;说明pythonpath的好处;说明pythonpath的妙用。学了PYTHONPATH 写几十个项目复用公共代码如虎添翼
Python
47
star
6

celery_demo

演示复杂深层路径,完全不按照一般套路的目录格式的celery使用
Python
46
star
7

threadpool_executor_shrink_able

pip install threadpool_executor_shrink_able 最好的python线程池,可以实现线程池自动缩小,实现java keepAliveTime参数的功能。,shap threadpoolexecutor, realize java keepAliveTime,bounded work queue,direct display of thread errors
Python
30
star
8

nb_http_client

pip install nb_http_client ,nb_http_client 是 python 史上性能最强的http客户端,比任意请求包快很多倍
Python
26
star
9

pysnooper_click_able

pip install pysnooper_click_able 神级别黑科技装饰器,实现难度5颗星。不用打断点不用到处加print的deubg工具,可以精确显示代码运行率轨迹并点击。base pysnooper, but can click and jump to code line.
Python
17
star
10

object_pool_proj

pip install universal_object_pool ,万能通用对象池,可以池化任意自定义类型的对象。
Python
13
star
11

realtime_web_logs

pip install realtime_web_logs 文件日志实时显示到web页面。附带全系统硬盘的文件浏览下载功能。支持日志显示自动滚动和暂停。
Python
10
star
12

decorator_libs

pip install decorator_libs ,各种最常用的日常通用不针对具体业务的装饰器大全
Python
8
star
13

db_libs

pip install db_libs 各种数据库的封装。只封装生成连接,很少添加新的方法调用原生方法这种写法。
Python
7
star
14

async_pool_executor

pip install async_pool_executor,its api like the concurrent.futures.使asyncio并发编程简化10倍
Python
7
star
15

sync2asyncio

pip install sync2asyncio ,使python任意同步库快速变asyncio异步语法的方式 ,simple_run_in_executor
Python
6
star
16

auto_run_on_remote

pip install auto_run_on_remote 自动在远程机器运行当前项目下的任意脚本。替代pycahrm专业版调用远程解释器,更简单。
Python
5
star
17

flask_ext_ydf

各种flask扩展,
Python
5
star
18

distrubuted_framework_vs_celery_benchmark

分布式函数调度框架和celery的性能精准对比
Python
5
star
19

pyqt5demo

实现了左边界面控件,右边控制台的使用布局。项目所有print和日志打印自动重定向到自定义的右边的黑色控制台。
HTML
5
star
20

fastapi_use_funboost

fastapi 使用分布式函数调度框架 funboost 作为后台消费的 demo
Python
3
star
21

base_decorator

pip install base_decorator 通用的装饰器基类,使写装饰器变得更简单。
Python
2
star
22

database_auto_bulk_operation

强大的自动批量聚合操作各种数据库,不需要再调用处手动去喂给批量调用方法一个个组装好了数组。
Python
2
star
23

nb_filelock

pip install nb_filelock 使用磁盘文件作为介质,实现基于单台机器的跨进程跨解释器的分布式锁。
Python
2
star
24

tps_threadpool_executor

pip install tps_threadpool_executor , tps_threadpool_executor,function run times every second Frequency control , multi thread + proccess
Python
2
star
25

django_use_funboost

django使用funboost 启动web和消费demo
Python
1
star
26

nb_log_file_handler

multi process safe log file handler,both time and size rotate。同时按时间和大小切割的多进程安全的高性能日志fileHandler
Python
1
star
27

ydf0509

Python
1
star
28

mysql_pool

pip install mysql_pool 使用python通用对象池 universal_object_pool 实现的mysql连接池
Python
1
star
29

kuai_log

the most fast python log
Python
1
star
30

nb_libs

pip install nb_libs 其他杂项的工具类放在一起
Python
1
star
31

uwsgi_flask_funboost

uwsgi_flask_funboost
Python
1
star
32

auto_restart

pip install auto_restart 冷重启工具,自动检测到git发生变化时候,自动重启部署命令。
Python
1
star
33

chained_mode_time_tool

pip install chained_mode_time_tool ,爽快的时间转换类,支持无限链式调用。比模块级+函数的在调用上方便很多
Python
1
star