设计模式之工厂方法模式

工厂方法模式的定义:

工厂模式是一个在软件开发中用来创建对象的设计模式。

工厂模式包含一个超类,这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。

为了实现此方法,需要创建一个工厂类创建并返回。

当程序运行输入一个“类型”的时候,需要创建于此相应的对象,这就用到了工厂模式.在如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。

当增加一个新的类型,不在需要修改已存在的类,只增加能够产生新类型的子类。

简短的说,当以下情形可以使用工厂模式:

1.不知道用户想要创建什么样的对象

2.当你想要创建一个可扩展的关联在创建类与支持创建对象的类之间。

优点:

用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。

灵活性增强,对于新产品的创建,只需多写一个相应的工厂类。

典型的解耦框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。

缺点:

类的个数容易过多,增加复杂度

增加了系统的抽象性和理解难度

抽象产品只能生产一种产品,此弊端可使用抽象工厂模式解决。

# 工厂方法模式

class CreateOperation(object):

def get_name(self):

return self.Operation_name

class Addition(CreateOperation):

def __init__(self):

self.Operation_name ='Addition'

    def count(self):

print("加法计算")

class Subtraction(CreateOperation):

def __init__(self):

self.Operation_name ='Subtraction'

    def count(self):

print("减法计算")

class OperationInterfaceFactory(object):

'''接口基类'''

    def create(self):

'''把要创建的工厂对象装配进来'''

        raise NotImplementedError              #报错后产生的问题分类是NotImplementedError

class CreateAddition(OperationInterfaceFactory):

def create(self):

return Addition()

class CreateSubtraction(OperationInterfaceFactory):

def create(self):

return Subtraction()

shape_interface = CreateAddition()

obj = shape_interface.create()

obj.get_name()

obj.count()

shape_interface2 = CreateSubtraction()

obj2 = shape_interface2.create()

obj2.count()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容