python 设计模式(一):工厂模式

来源:互联网 发布:云端笔记 知乎 编辑:程序博客网 时间:2024/05/16 10:37

全文绝大部分摘自《精通python设计模式》
https://item.jd.com/11993078.html

在工厂设计模式中,客户端(调用方)可以请求一个对象,而无需知道这个对象来自哪里;也就是说,使用哪个类来生成这个对象。

(1) 工厂背后的思想是简化对象的创建。
与客户端自己基于类实例化来直接创造对象相比,基于一个中心化函数来实现,更易于追踪创建了那些对象。通过将创建对象的代码和使用对象的代码解耦,工厂能够降低应用维护的复杂度。


工厂通常具有两种形式:
    (1) 第一种是工厂方法,他是一个方法(在python中叫函数,当然python中也有类方法),对不同的输入参数返回不同的对象。
    (2)第二种是创建一系列相关事务对象的工厂方法。

工厂方法

http://www.isware.cn/python-design-pattern/

class Animal(object):    def eat(self, food):        raise NotImplementedError()class Dog(Animal):    def eat(self, food):        print '狗吃', foodclass Cat(Animal):    def eat(self, food):        print '猫吃', fooddef create_animal(name):    if name == 'dog':        return Dog()    elif name == 'cat':        return Cat()def client():    animal = create_animal('dog')    animal.eat('肉骨头')    animal = create_animal('cat')    animal.eat('鱼骨头')

抽象工厂

代码来自:https://www.cnblogs.com/lizhitai/p/4471952.html

class Person:    def __init__(self):        self.name = None        self.gender = None    def getName(self):        return self.name    def getGender(self):        return self.genderclass Male(Person):    def __init__(self, name):        print "Hello Mr." + nameclass Female(Person):    def __init__(self, name):        print "Hello Miss." + nameclass Factory:    def getPerson(self, name, gender):        if gender == 'M':                return Male(name)        elif  gender == 'F':                return Female(name)if __name__ == '__main__':    factory = Factory()    person = factory.getPerson("Chetan", "M")

两种区别:

(1) 工厂方法设计模式的实现是一个不属于任何类的单一函数,负责单一种类对象(一个形状,一个连接点或其他对象)的创建。
(2) 抽象工厂设计模式的实现是同属于单个类的许多工厂方法用于创建一系列种类的相关对象(一辆车的部件,一个游戏的环境,或者其他对象)。
个人体会(有偏差):
工厂方法就是一个客户需要东西,这个需求交给代理人去打理,这个人可以从不同的行业的厂里下订购。客户不需要关注东西来自哪里。
抽象工厂呢,就是客户有需求,代理人通过匹配需求,直接将能生产该类型货物的厂商直接提供给客户,客户不需要关心怎么去匹配到厂商。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电梯什么牌子好 电梯结构图解 电梯英语怎么说 简易电梯升降机 医用电梯报价 乘客电梯价格 室外电梯报价 小区加装电梯 小区电梯价格 电梯厂家有哪些 旧楼安装电梯 室外观光电梯报价 电梯有限公司 液压电梯厂家 三菱电梯报价 室外电梯安装 7层楼电梯价格 手扶电梯多少钱 电梯公司排名 小升降机 传菜升降梯 自动升降车 阁楼升降梯 研究生欲造登月电梯 电打火机能过安检么 脑电地形图检查出什么 电击手电筒6000万伏 双节棍 无极棍 双节棍吧 三节棍 电帮 蝎子灯 手灯 电椅 紫竹铃骑电椅图片欣赏 电疗按摩椅 电按摩椅 电榄 电线价格表 10平方铜线价格