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
简单实现,并不完美,后面补上
转载于:https://www.cnblogs.com/ssyfj/p/8970114.html
python---重点(设计模式)相关推荐
- 最全面的Python重点知识汇总,建议收藏!
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨网络,由法纳斯特整理 这是一份来自于 SegmentFault ...
- 你见过的最全面的Python重点知识总结!
这是一份来自于 SegmentFault 上的开发者 @二十一 总结的 Python 重点.由于总结了太多的东西,所以篇幅有点长,这也是作者"缝缝补补"总结了好久的东西,强烈建议收 ...
- 最全面的Python重点知识汇总,建议码住
这是一份来自于 SegmentFault 上的开发者 @二十一 总结的 Python 重点.由于总结了太多的东西,所以篇幅有点长,这也是博主"缝缝补补"总结了好久的东西. Py2 ...
- 你见过的最全面的Python重点(附代码演示)
原文链接: https://segmentfault.com/a/1190000018737045 这是一份来自于 SegmentFault 上的开发者 @二十一 总结的 Python 重点.由于总结 ...
- 你见过的最全面的Python重点知识汇总
原文链接: https://segmentfault.com/a/1190000018737045 这是一份来自于 SegmentFault 上的开发者 @二十一 总结的 Python 重点.由于总结 ...
- 这或许是你见过的最全面的 Python 重点知识总结
这是一份总结 Python 重点知识点点文章. 由于有太多的东西,本篇点篇幅有点长,这也是我"缝缝补补"总结了好久的东西,强烈建议收藏.关注.点赞,再慢慢看~ [注]完整版代码.数 ...
- 为什么 Python 不用设计模式?
作者 | 刘欣 责编 | 伍杏玲 本文经授权转自码农翻身(ID:coderising) 在遥远的Python王国,有一位少年,非常热爱编程,他的父母想给他报一个班,问了万能的朋友圈以后,发现大家都推荐 ...
- python做平面设计-Python系列干货之——Python与设计模式
原标题:Python系列干货之--Python与设计模式 一.创建类设计模式 前言: 什么样的程序员是一个好的程序员?学会很多门编程语言,就是一个好的程序员了么?事实上,学会一门编程语言不是一件很难的 ...
- python 与设计模式 ——工厂与单例
python 与设计模式 源码地址:http://git.oschina.net/duoduo3_69/python_design_pattern git checkout v001(这个版本与此篇博 ...
- python用设计模式吗_为什么Python不用设计模式?
原标题:为什么Python不用设计模式? 来自:码农翻身(微信号:coderising) 在遥远的Python王国,有一位少年,非常热爱编程,他的父母想给他报一个班,问了万能的朋友圈以后,发现大家都推 ...
最新文章
- Codeforces Round #484 (Div. 2) A. Row
- layer.open增添模板效果母页面
- spark重要参数调优建议:spark.default.parallelism设置每个stage默认的task数量
- 将x的二进制最后一位置为0
- C语言tolower函数介绍、示例和实现
- 图像特征计算与表示——基于内容的图像检索
- 计算机 管理 被停用,如果电脑上出现“你的账户已被停用请向系统管理员咨询”怎么办?...
- 0302借软件工程触IT
- 从0开始,使用豆瓣数据集做一个基于FM和逻辑回归的电影推荐系统
- SmartToast
- FFmpeg指令行打开usb摄像头(windows)
- Google Play搜不到自己应用
- 武 学院2017级计算机专业,关注 | 计算机学院2017级新生见面会暨军训动员会顺利举行...
- linux下测试硬盘读写速度
- 无限循环小数转化分数
- 2020个人成长计划
- vscode配置opencv环境,包括opencv源码编译(mingw64 + cmake)
- k8s面试中最常见的50个问题(翻译)
- 职场员工有没有潜力,看这一个能力就够了
- 人工智能中的分析学快速入门之著名教材
热门文章
- 基于ZooKeeper的分布式Session实现
- 【卷积核设计】Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs
- 模型 标签数据 神经网络_大型神经网络和小数据的模型选择
- 机器学习结构化学习模型_生产化机器学习模型
- 如何学习 azure_Azure的监督学习
- 如何使能linux vivid
- stm32 USB增加端点总结
- FIR定点提高精度的trick_02
- ASA 9.21 in Vmware Workstation 10
- 64位Ubuntu kylin 16.04搭建tftp服务器