会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 设计模式——把类作为参数的抽象工厂模式!

设计模式——把类作为参数的抽象工厂模式

时间:2025-11-05 06:35:01 来源:益强数据堂 作者:域名 阅读:748次

今天给大家介绍一个非常简单的设计式设计模式,一学就会,模式非常好用。把类

这个模式叫做抽象工厂模式,参数厂模大家可能对工厂模式比较熟悉,象工在工厂模式当中封装了实例的设计式创建逻辑。主要的模式用途一般是将一些复杂的类的创建过程整合在一起,通过参数控制,把类这样使用者可以较简单地获得实例。参数厂模

抽象工厂

抽象工厂模式和工厂模式类似,象工只不过更加抽象了一层。设计式在创建实例的模式时候,不是把类通过参数来控制,而是参数厂模直接传入想要创建的类。这一点其实也是象工Python的特性,一切皆是对象,一切皆可传参,类本身也是一个对象,类也是可以传参的b2b信息网。所以我们可以把一个类直接传入工厂,工厂通过类来创建实例。

我们来用代码简单演示一下:

class AbstractFactory:     def __init__(self, cls):         self.cls = cls     def build(self, *args, **kw):         return self.cls(*args, **kw) 

这段代码大家都能看懂,但是这其实也不能完全叫做抽象工厂,因为体现不出来抽象。这里的抽象主要是把工厂当做了一个更高阶的抽象类,有点像是抽象类的反向使用。

我们一般使用抽象类都是这样:

import abc class AbstractClass:     def __init__(self):         pass     @abc.abstractmethod     def run(self, *args, **kw):         pass 

然后它的派生类再去实现抽象类当中定义的抽象方法,而这里的顺序则是反的。父类当中的逻辑其实也是定好的,只是它在具体执行的时候是调用传入的子类实例实现的。

为了更好说明,香港云服务器我们来看一个例子吧:

class PetCollection(object):     def __init__(self, animal):         self.pet_generator = animal         self.pet = self.pet_generator()     def speak(self):         self.pet.speak()     def show_pet(self):         pet = self.pet         print(Pet\s name is {}.format(pet))         print(It says: {}!.format(pet.speak())) class Dog(object):     def speak(self):         return woof     def __str__(self):         return dog class Cat(object):     def speak(self):         return meow     def __str__(self):         return cat if __name__ == __main__:     pet = PetCollection(Dog)     pet.show_pet() 

在这个例子当中,Dog和Cat是子类,PetCollection是父类。我们可以发现在父类当中也实现了speak这个方法,但是它是调用子类的speak实现的。也就是说凡是拥有speak这个类的子类都可以用来创建PetCollection,这个PetCollection相当于一个抽象的通用类,这样我们在使用的时候可以用它来集成很多逻辑,简化操作。

我第一次看这个设计模式的时候,觉得普普通通,不过是把类当做参数而已。但是之后又看了一次,又有了新的理解,这不也是抽象类的反向使用吗?其实代码的核心就只有逻辑,服务器租用所谓的设计模式也不过是前人总结出的经验而已。真正有价值的并不是这个模式当中的代码怎么写,而是核心的逻辑,这些融会贯通了,以后也不难设计出我们自己的模式来。

本文转载自微信公众号「TechFlow」,可以通过以下二维码关注。转载本文请联系TechFlow公众号。

(责任编辑:域名)

推荐内容
  • iOS11Beta1(探索iOS11Beta1带来的全面升级和创新特性)
  • 剖析 SPI 在 Spring 中的应用
  • Python基础(10):函数
  • 如何投资域名?
  • 探索Toshiba迷你电脑的性能与实用性(一款小巧便携的强力计算机,助您随时随地提升工作效率)
  • 一篇文章让你了解如何优雅地处理重复请求