zoukankan      html  css  js  c++  java
  • 简单工厂设计模式

    意图:
    
        定义一个用于创建对象的接口,让子类决定实例化哪一个类。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()

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

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

  • 相关阅读:
    E: 无法获得锁 /var/lib/dpkg/lock-frontend
    Ubuntu 18.04 更换apt源
    ubuntu18.04
    小a与“204”------数列、排序
    星际穿越
    合唱团---DP
    分苹果---暴力
    地牢逃脱----DFS搜索最优解
    下厨房---map/字符串查询
    hdu 2654 Be a hero
  • 原文地址:https://www.cnblogs.com/renfanzi/p/6009138.html
Copyright © 2011-2022 走看看