(二)python 设计模式 --- 简单工厂

文件目录 DesignPattern\SimpleFactory.py

# -*- coding: utf-8 -*-

""" 非简单工厂 要记住住各种调用接口,子类的名字都要记住,直接实例化子类 """


class Shape(object):
    pass


class Triangle(Shape):

    def draw(self):
        print "三角形"

class Square(Shape):

    def draw(self):
        print "正方形"

""" 简单工厂方法 """

import importlib
class Shape(object):

    def draw(self):
        raise NotImplementedError


class Circle(Shape):

    def draw(self):
        print "圆"


class Triangle(Shape):

    def draw(self):
        print "三角"


class ShapeFactory(object):
    # 仅这一个图形工厂
    @classmethod
    def create(cls, shape):
        # 绝对路径导入,优于相对路径
        try:
            router = importlib.import_module('DesignPattern.SimpleFactory')
            return getattr(router, shape)()
            # 此处可以反射获取,缺点也再此,需要新图形时,需要再次新加代码
        except AttributeError as at:
            print '无 %s 图形' % shape

if __name__ == '__main__':
    """ 非简单工厂 """
    t = Triangle()
    s = Square()
    t.draw()
    s.draw()

    fac = ShapeFactory()
    # 想画图
    obj = fac.create('Triagle')
    # 需要画什么 用这个统一的接口创建
    # 将类的实例化延迟到了子类,比起上一个,进一步的归纳统一了接口
    obj.draw()
    原文作者:AngelovLee
    原文地址: https://blog.csdn.net/ChangerJJLee/article/details/80888848
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞