码迷,mamicode.com
首页 > 其他好文 > 详细

简单工厂设计模式

时间:2016-10-28 20:41:25      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:rectangle   http   添加   设计模式   需要   实例化   code   还需要   还需   

 

意图:

    定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

适用性:
    
    当一个类不知道他所必须创建的对象的类的时候。
    当一个类希望有他的子类来指定他所创建的对象的时候
    当类将创建对象的职责委托给多个子类中的某一个。

技术分享

 

class ShapeFactory(object):
    ‘‘‘工厂类‘‘‘

    def getShape(self):
      return self.shape_name

class Circle(ShapeFactory):

  def __init__(self):
    self.shape_name = "Circle"
  def draw(self):
    print(draw circle)

class Rectangle(ShapeFactory):
  def __init__(self):
    self.shape_name = "Retangle"
  def draw(self):
    print(draw Rectangle)

class Shape(object):
  ‘‘‘接口类,负责决定创建哪个ShapeFactory的子类‘‘‘
  def create(self, shape):
    if shape == Circle:
      return Circle()
    elif shape == Rectangle:
      return Rectangle()
    else:
      return None


fac = Shape()
obj = fac.create(Circle)
obj.draw()
obj.getShape()

 

优点:用户不需要修改代码

缺点:当用户需要添加新的运算类的时候,不仅需新加运算类,还需要修改工厂类,违反了开放封闭原则

 

简单工厂设计模式

标签:rectangle   http   添加   设计模式   需要   实例化   code   还需要   还需   

原文地址:http://www.cnblogs.com/renfanzi/p/6009138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!