前戏:设计模式简介

设计模式是面向对象设计的解决方案,是复用性程序设计的经验总结。(与语言无关,任何语言都可以实现设计模式)

设计模式根据使用目的的不同而分为创建型模式(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

简单实现,并不完美,后面补上

最新文章

  1. Ubuntu14.0下安装Zend Framework 2
  2. C#多线程同步事件及等待句柄AutoResetEvent 和 ManualResetEvent
  3. css width height
  4. jQuery事件对象event的属性和方法
  5. shell text process code
  6. Centos 关闭后台进程 .sh 等
  7. Icon资源详解[2]
  8. Xshell5最新版激活
  9. AngularJS分页实现
  10. thinkPHP模板的输出和模型的使用
  11. Maven 解决JAR包冲突
  12. POJ 1011 sticks 搜索
  13. 阿里云 Centos7.3安装mysql5.7.18 rpm安装
  14. 字符串拼接data-id时注意事项
  15. canvas绘制时钟及注释及save和restore的用法
  16. kubernetes实战之运行aspnetcore webapi微服务 - kubernetes
  17. Vue.js 技术揭秘(学习) vue流程
  18. Hadoop生态圈-Zookeeper的工作原理分析
  19. 卡通渲染Shader
  20. C语言 · 确定元音字母位置

热门文章

  1. web03-OutputInfo
  2. windows和RedHat双系统安装说明
  3. STL的集合set
  4. js如何判断一个值是不是Array类型
  5. WindowsXP开机就打开数字小键盘的几种方法
  6. try…catch 结构
  7. 如何实现MySQL表数据随机读取?从mysql表中读取随机数据
  8. Android Apollo MQTT入门
  9. ZK Leader选举
  10. QString,string,char* 在utf8和gbk不同编码下的相互转化