python设计模式
loco_python
人生苦短,我学python
展开
-
python设计模式-工厂模式
一、工厂方法(一)工厂模式运用场景如果因为应用创建对象的代码分布在多个不同的地方,而不是仅在一个函数/方法中,你发 现没法跟踪这些对象,那么应该考虑使用工厂方法模式。有一个工厂方法负责连接到不同的数据库(MySQL、SQLite)。另一个工厂方法负责创建要求的 几何对象(圆形、三角形)。若需要将对象的创建和使用解耦,工厂方法也能派上用场。工厂方法可以在必要时创建新的对象,从...转载 2018-03-03 13:46:55 · 151 阅读 · 0 评论 -
python设计模式-责任链模式
责任链模式(一)什么事责任链 责任链(Chain of Responsibility)模式用于让多个对象来处理单个请求 时,或者用于预先不知道应该由哪个对象(来自某个对象链)来处理某个特定请求时。(二)责任链原则存在一个对象链(链表、树或任何其他便捷的数据结构)。我们一开始将请求发送给链中的第一个对象。对象决定其是否要处理该请求。对象将请求转发给下一个对象。...原创 2018-03-05 15:06:07 · 250 阅读 · 0 评论 -
python设计模式-代理模式
代理模式(一)什么是代理模式 Proxy模式是一种常用的设计模式,它主要用来通过一个对象(比如B)给一个对象(比如A) 提供’代理’的方式方式访问。比如一个对象不方便直接引用,代理就在这个对象和访问者之间做了中介。(二)应用案例class Proxy(object): def __init__(self, subject): self.__subj...转载 2018-03-05 13:27:51 · 151 阅读 · 0 评论 -
python设计模式-享元模式
享元模式(一)什么是享元模式 享元设计模式通过为相似对象引入数据共享来最小化内存使用,提升性能(请参考网页。(二)使用场景系统中存在大量的相似对象时,可以选择享元模式提高资源利用率。咖啡订购平台比较小,若假设一个电商平台,每个买家和卖家建立起买卖关系后,买家对象和卖家对象都是占用资源的。如果一个卖家同时与多个买家建立起买卖关系呢?此时享元模式的优势就体现出来了;需要缓冲池...转载 2018-03-05 13:09:20 · 231 阅读 · 0 评论 -
python设计模式-外观模式
外观模式(一)什么是外观模式 为子系统中的一组接口提供一个一致的界面。此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。(二)设计思想一个子系统由很多功能模块组成这些功能模块分别对外暴露自己的访问接口这些功能模块联合起来对外提供该子系统的完整功能此时定义一组新的接口,将该子系统的所有模块封装起来,统一对外提供接口这个全新的接口就是原有子系统的外观...转载 2018-03-05 11:37:26 · 162 阅读 · 0 评论 -
python设计模式-适配器模式
适配器模式(一)什么是适配器模式 适配器模式(Adapter pattern)是一种结构型设计模式,帮助我们实现两个不兼容接口之间 的兼容。(二)适配器# -*- coding: utf-8 -*-class Dog: '''这是一个原始类''' def __init__(self): self.name = 'wangcai' d...原创 2018-03-05 10:48:42 · 222 阅读 · 0 评论 -
python设计模式-生产者与消费者模式
生产者与消费者模式(一)什么是生产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。 这个阻塞队列就是用来给生产者和消费...原创 2018-03-03 17:41:51 · 634 阅读 · 1 评论 -
python设计模式-单例模式
单例模式(一)什么是单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。(二)实现单例的方法导入模块使用new方法使用装饰器(三)模块 Python 模块在第一次导入时,会生成 .pyc 文件,当第二次导入...原创 2018-03-03 16:52:43 · 206 阅读 · 0 评论 -
python设计模式-原型设计
原型模式设计(一)什么是原型设计模式 原型设计模式(Prototype design pattern)帮助我们创建对象的克隆,其最简单的形式就是一 个clone()函数,接受一个对象作为输入参数,返回输入对象的一个副本。在Python中,这可以 使用copy.deepcopy()函数来完成。(二)应用案例当我们已有一个对象,并希望创建该对象的一个完整副本时,原型模式就派上用...原创 2018-03-03 15:04:46 · 258 阅读 · 0 评论 -
python设计模式-建造者模式
建造者模式(一)什么是创造者模式 我们想要创建一个由多个部分构成的对象,而且它的构成需要一步接一步地完成。 只有当各个部分都创建好,这个对象才算是完整的。这正是建造者设计模式。快餐店:从点餐到取餐网页构建器:创建具有不同布局的HTML页面文档转换器,用户界面表单创建工具等(二)工厂模式和建造者模式区别工厂模式以单个步 骤创建对象,而建造者模式以多个步骤创建对象,...原创 2018-03-03 14:24:11 · 275 阅读 · 0 评论 -
python设计模式-策略模式
策略模式(一)排序问题 大多数问题都可以使用多种方法来解决。以排序问题为例,对于以一定次序把元素放入一个列表,排序算法有很多。通常来说,没有公认最适合所有场景的算法(请参考网页。一些不同的评判标准能帮助我们为不同的场景选择不同的排序算法,其中应该考虑的有以下几个。需要排序的元素数量:这被称为输入大小。当输入较少时,几乎所有排序算法的表现都 很好,但对于大量输入,只有部分算法具有...转载 2018-03-05 16:08:10 · 146 阅读 · 0 评论