python---重点(设计模式)
前戏:设计模式简介
设计模式是面向对象设计的解决方案,是复用性程序设计的经验总结。(与语言无关,任何语言都可以实现设计模式)
设计模式根据使用目的的不同而分为创建型模式(Creational Pattern),结构性模式(Structural Pattern)和行为型模式(Behavioral Pattern)
创建型模式:提出来对象创建的解决方案以及数据封装的方法。降低了创建对象时代码实现的复杂度,是对象的创建时能够满足特定的要求。例如工程模式,抽象工厂模式,单例模式,生成器模式
结构型模式:描述了对象之间的体系结构,通过组合,继承等方式改善体系结构,降低体系结构中的组件依赖性。例如,适配器模式。桥模式,组合模式,装饰器模式,外观模式等。
行为模式:描述了对象之间的交互和各自的职责,有助于实现程序中对象的通讯和流程的控制。例如:迭代器模式,解释器模式,中介者模式,观察者模式等。
使用python同样可以实现各种设计模式,而且实现过程比较简单。
一:工厂模式
在工厂方法模式中,工厂方法用于创建产品。并隐藏了产品对象实例化的过程。过程方法根据不同的参数生成不同的对象。因此客户程序只需要知道工厂类和产品的父类,并不需要知道产品的创建过程以及返回产品的类型。
例如:定义Factory类创建不同的Fruit对象,Apple类和Banana类继承自Fruit类。那么这两个类(Apple和和Banana类就是我们需要去生成的产品)
实现工厂方法(简单版本)
class Factory:
def createFruit(self,fruit):
if fruit == "apple":
return Apple()
elif fruit == "banana":
return Banana() class Fruit:
def __str__(self):
return "fruit" class Apple(Fruit):
def __str__(self):
return "apple" class Banana(Fruit):
def __str__(self):
return "banana" if __name__ == "__main__":
factory = Factory() a = factory.createFruit("apple")
b = factory.createFruit("banana")
print(a,b) #apple banana
简单实现,并不完美,后面补上
python---重点(设计模式)的更多相关文章
- Python与设计模式之创建型模式及实战
用Python学习一下设计模式,如果很枯燥的话,就强行能使用的就用一下.设计模式参考Python与设计模式-途索 1. 单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点. import ...
- [转]Python与设计模式
一.创建类设计模式 前言 什么样的程序员是一个好的程序员?学会很多门编程语言,就是一个好的程序员了么?事实上,学会一门编程语言不是一件很难的事,而“学会”一门编程语言是非常难的一件事.前一个“会”强调 ...
- Python使用设计模式中的责任链模式与迭代器模式的示例
Python使用设计模式中的责任链模式与迭代器模式的示例 这篇文章主要介绍了Python使用设计模式中的责任链模式与迭代器模式的示例,责任链模式与迭代器模式都可以被看作为行为型的设计模式,需要的朋友可 ...
- [python实现设计模式]-4.观察者模式-吃食啦!
观察者模式是一个非常重要的设计模式. 我们先从一个故事引入. 工作日的每天5点左右,大燕同学都会给大家订饭. 然后7点左右,饭来了. 于是燕哥大吼一声,“饭来啦!”,5点钟定过饭的同学就会纷纷涌入餐厅 ...
- [python实现设计模式]-3.简单工厂模式-触宝开放平台
预备知识: 开放封闭原则(Open-Closed Principle OCP) Software entities(classes,modules,functions etc) should open ...
- [python实现设计模式]-1. 单例模式
设计模式中,最简单的一个就是 “单例模式”, 那么首先,就实现一下单例模式. 那么根据个人的理解,很快就写出第一版. # -*- coding: utf-8 -*- class Singleton(o ...
- Python Selenium设计模式-POM
前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点.应用场景和核心思想有一定的理解和掌握. 为什么要用POM 基于python s ...
- (Python)PO设计模式
无规矩不成方圆.编写代码也是,如果没有大概的框架,管理代码将会是一件很头疼的事. 先看看笔者以前写的python脚本: 如果只有一个用例,这样看着好像挺整洁的.但是当用例越来越多后,如果元素定位发生了 ...
- 基于Python的设计模式简述
结构梳理>>> 第一部分: 创建型模式 工厂模式 工厂方法 抽象工厂 建造者模式 原型模式 单例模式 第二部分: 结构型模式 适配器模式 修饰器模式 外观模式 享元模式 模型-视图- ...
- 你见过的最全面的python重点
首先和大家说个对不起,由于总结了太多的东西,所以篇幅有点长,这也是我"缝缝补补"总结了好久的东西,对于Nginx的东西我没总结在这里,大家可以Python聚焦看,点击直达专栏哦. ...
随机推荐
- 超级迷宫之NABCD
模式之一:双人模式 N:基于双人之间的竞争与协作,朋友之间可以有一个竞争比赛,一决高下,男女朋友之间适合双人协作模式,共同完成游戏. A:双人竞争模式为双人同起点或不同起点来进行游戏,在竞争的紧张压力 ...
- C++第一次作业
Github地址点这里
- HDU 2109 Fighting for HDU
http://acm.hdu.edu.cn/showproblem.php?pid=2109 Problem Description 在上一回,我们让你猜测海东集团用地的形状,你猜对了吗?不管结果如何 ...
- Delphi函数的out、var等关键字的作用,和使用场景
问题描述 Delphi函数的out.var等关键字的作用,和使用场景 Delphi函数的out.var等关键字的作用,和使用场景,我知道var是作为传值调用,但是像out这个关键字又是什么作用呢? 解 ...
- jQ返回定位插件
一.jQuery 提供开发者开发插件的几种模式 1.$.extend(); //这个方法是绑定在$上面的.可以通过$直接调用 2.$.fn.方法名 //这个方法是绑定在Dom对象上面的 ...
- Eclipse_生成webservice客户端
1.工具:eclipse3.3或者是带有webservice插件的eclipse wsdl2java(这个本人没用过,具体长什么样不清楚) 2.步骤: 首先用浏览器访问webservice的站点,点击 ...
- 命令行方式操作O365
这几天公司为O365启用了双因子认证,期间出了些小问题,导致我无法使用管理员账号登入控制台,但是Powershell的方法依旧可以.所以我觉得还是有必要把图形化操作改成脚本操作,以备不时之需.以后凡是 ...
- [学习]Windows server 使用控制台时容易卡死的解决方法
公司使用Windows server 下面的 cmd 命令行 控制台打开某一个 bat 文件的方式 进行后台使用.. 但是经常发现在winserver 2016 时 遇到卡死的情况, 今天中午我再进行 ...
- HDU4726——Kia's Calculation——2013 ACM/ICPC Asia Regional Online —— Warmup2
题目的意思是给你两个数字(多达10^6位) 做加法,但是有一点,没有进位(进位不算,相当于这一位相加后对10取模) 你可以任意排列两个数字中的每一位,但是不能是0开头. 现在题目要求以这种不进位的算法 ...
- 【uoj#142】【UER #5】万圣节的南瓜灯 乱搞+并查集
题目描述 给出一张 $n\times m$ 的网格图,两个格子之间有一条双向边,当且仅当它们相邻,即在网格图中有一条公共边. 特殊地,对于 $1\le x\le n$ ,$(x,1)$ 和 $(x ...