工厂模式的python实现】的更多相关文章

#1.什么是工厂模式 #2.工厂模式的分类 ''' 1. 简单工厂模式 2. 工厂方法模式 3. 抽象工厂方法模式 ''' #3.简单工厂模式的python实现 from abc import ABCMeta, abstractmethod class Animal(metaclass=ABCMeta): @abstractmethod def do_say(self): pass class Dog(Animal): def do_say(self): print("wang wang!!&q…
2. 工厂模式 工厂模式是创建型设计模式的一种.核心的思想是,通过传递给类或函数某种产品的信息来创建产品并返回.当我们想得到产品a对象,只需把产品a的名字传递给工厂函数就能得到产品a对象.而核心思想的背后是为了遵循著名的“开闭原则”:对扩展开放,对修改封闭.当添加新功能时,对已经有的函数代码不需要修改,只需要添加新功能相关的代码即可. 举一个最简单的例子:假如我们要写一个计算器,实现加减乘除四则运算,那么最简单的方法就是写一个函数,传入运算符,然后通过switch语句(python中没有swit…
简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 例: 使用Python设计一个控制台计算器,要求输入两个数和运算符号,得到运算结果. 1. 初学者写法 class Operation(object): def __init__(self): pass def conver_strNumber(self, strNumber): ''' 将字符串格式的数字,转化成对应格式的数字 :param strNum…
1. 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会…
以字符串作为传递参数 以类名作为传递参数 来自为知笔记(Wiz)…
预备知识: 开放封闭原则(Open-Closed Principle OCP) Software entities(classes,modules,functions etc) should open for extension ,but close for modification. 所谓开放封闭原则就是软件实体应该对扩展开放,而对修改封闭.开放封闭原则是所有面向对象原则的核心. 软件设计本身所追求的目标就是封装变化,降低耦合,而开放封闭原则正是对这一目标的最直接体现. 对扩展开放,意味着有新…
http://blog.csdn.net/ponder008/article/details/6886039 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.优点:易于交换“产品系列”,只要更改相应的工厂即可.缺点:建立产品的时候很繁琐,需要增加和修改很多东西. 优化1:为了避免客户端有过多的逻辑判断,可以封装出一个简单工厂类来生成产品类.优化2:为了减少简单工厂类里面的逻辑判断,可以采用“反射”机制,直接根据外部的配置文件读取出需要使用产品类的信息. #enc…
#!/usr/bin/env python #coding=utf-8 # # 工厂模式第二例(神奇的Python) # 版权所有 2014 yao_yu (http://blog.csdn.net/yao_yu_126) # 本代码以MIT许可协议发布 # 2014-04-22 # 在上一例中, 我使用了ObjectFactory. # 实际上因为Python的动态特性, 可以直接使用 eval(类名字符串) 的方式达到相应的目的 # class Cube(object): pass clas…
#!/usr/bin/env python #coding=utf-8 # # 工厂模式一例 # 版权所有 2014 yao_yu (http://blog.csdn.net/yao_yu_126) # 本代码以MIT许可协议发布 # 2014-04-22 # class Cube(object): pass class Cuboid(object): pass class Cylinder(object): pass class Sphere(object): pass class Objec…
# coding = utf-8 from abc import ABCMeta, abstractmethod # 简单工厂模式 class Animal(metaclass=ABCMeta): @abstractmethod def do_say(self): pass class Dog(Animal): def do_say(self): print('Bhow Bhow!!!') class Cat(Animal): def do_say(self): print('Meow Meow…