首页 > 其他 > 详细

简单工厂模式

时间:2020-12-12 12:20:14      阅读:30      评论:0      收藏:0      [点我收藏+]
说明:严格来说,简单工厂模式不是GoF总结出来的23种设计模式之一。
 
意图:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 
 
适用性:
当一个类不知道它所必须创建的对象的类的时候。
当一个类希望由它的子类来指定它所创建的对象的时候。
当类将创建对象的职责委托给多个子类中的某一个。
 
示例代码:
#!/usr/bin/env python 
#-*- coding:utf-8 -*-
‘‘‘
simple Factory Method
‘‘‘
class Shape(object):
    ‘‘‘
    父类
    ‘‘‘
    def draw(self):
        raise NotImplementedError
 
class Circle(Shape):
    ‘‘‘
    Shape子类
    ‘‘‘
    def draw(self):
        print(draw circle)
 
class Rectangle(Shape):
    ‘‘‘
    Shape的子类
    ‘‘‘
    def draw(self):
        print(draw Rectangle)
 
class ShapeFactory(object):
    ‘‘‘
    工厂模式:暴露给用户去调用的,
    用户可通过该类进行选择Shape的子类进行实例化
    ‘‘‘
    def create(self, shape):
        if shape == Circle:
            return Circle()
        elif shape == Rectangle:
            return Rectangle()
        else:
            return None
 
fac = ShapeFactory() #实例化工厂类
obj = fac.create(Circle) #实例化Shape的Circle子类
obj.draw()
执行结果:
技术分享图片
技术分享图片
 
Shape(父类 or 基类):提取出所有子类的重复方法代码
Circle(Shape子类 or 派生类):作用为画圆形
Rectangle(Shape子类 or 派生类):作用为画矩形
ShapeFactory(新式类):该类作用为用户可根据该类对象创建指定的Shape子类对象(Circle or Rectangle)
优点:客户端不需要修改代码。
缺点: 当需要增加新的运算类的时候,不仅需新加运算类,还要修改工厂类,违反了开闭原则。
 

简单工厂模式

原文:https://www.cnblogs.com/absoluteli/p/14123925.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!