返回顶部
首页 > 资讯 > 前端开发 > VUE >如何理解设计模式之把类作为参数的抽象工厂模式
  • 373
分享到

如何理解设计模式之把类作为参数的抽象工厂模式

2024-04-02 19:04:59 373人浏览 安东尼
摘要

本篇内容主要讲解“如何理解设计模式之把类作为参数的抽象工厂模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解设计模式之把类作为参数的抽象工厂模式”吧!这

本篇内容主要讲解“如何理解设计模式之把类作为参数的抽象工厂模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解设计模式之把类作为参数的抽象工厂模式”吧!

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

抽象工厂

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

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

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相当于一个抽象的通用类,这样我们在使用的时候可以用它来集成很多逻辑,简化操作。

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

到此,相信大家对“如何理解设计模式之把类作为参数的抽象工厂模式”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何理解设计模式之把类作为参数的抽象工厂模式

本文链接: https://lsjlt.com/news/84173.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解设计模式之把类作为参数的抽象工厂模式
    本篇内容主要讲解“如何理解设计模式之把类作为参数的抽象工厂模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解设计模式之把类作为参数的抽象工厂模式”吧!这...
    99+
    2024-04-02
  • Python设计模式之抽象工厂模式
    python面向对象编程入门,我们需要不断学习进步 """抽象工厂模式的实现""" import random class PetShop: """宠物商店""" def __init_...
    99+
    2022-06-04
    模式 抽象 工厂
  • Java设计模式之抽象工厂模式详解
    目录一、什么是抽象工厂模式二、示例程序三、UML一、什么是抽象工厂模式 为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类,这称之为抽象工厂模式(Abstract ...
    99+
    2024-04-02
  • python设计模式之抽象工厂模式详解
    抽象工厂模式(Abstract Factory Pattern):属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它...
    99+
    2024-04-02
  • 深入理解Java设计模式之抽象工厂模式
    目录一、什么是抽象工厂模式二、抽象工厂模式的应用场景三、抽象工厂模式和工厂方法模式对比四、抽象工厂模式的优缺点五、抽象工厂模式的实现六、总结一、什么是抽象工厂模式 为创建一组相关或相...
    99+
    2024-04-02
  • Java设计模式之抽象工厂模式(Abstract Factory)
    作为工厂方法模式的孪生兄弟,相信大家对工厂方法模式和抽象工厂模式傻傻分不清楚吧。 那么,就让我来拯救大家吧! 抽象工厂模式 定义:所谓抽象工厂模式就是为创建一组相关或相互依赖的对象提...
    99+
    2024-04-02
  • Java设计模式之抽象工厂模式浅析讲解
    1.介绍 当系统准备为用户提供一系列相关对象,又不想让用户代码和这些对象形成耦合时,就可以使用抽象工厂模式。 2.如何实现 1)抽象产品--Car 2)具体产品--BYDCar、TS...
    99+
    2024-04-02
  • 怎么理解Java设计模式的抽象工厂模式
    这篇文章主要讲解了“怎么理解Java设计模式的抽象工厂模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Java设计模式的抽象工厂模式”吧!一、什么是抽象工厂模式为创建一组相关或相互...
    99+
    2023-06-25
  • Java 深入理解创建型设计模式之抽象工厂模式
    1.什么是抽象工厂模式? 抽象工厂模式:  定义了一个interface用于创建相关或有依赖关系的对象簇,而无需指明具体的类。抽象工厂模式可以将简单工厂模式和工厂方法模式进...
    99+
    2024-04-02
  • Java设计模式之工厂方法和抽象工厂
    全网最详细的工厂设计模式,本文主要是创建型设计模式中的工厂方法和抽象工厂,先由传统实现方式引出问题,接着对代码改进到简单工厂,后扩展到工厂方法,最后是抽象工厂模式,文中包括概念理解和...
    99+
    2024-04-02
  • .Net设计模式之抽象工厂模式怎么实现
    这篇文章主要讲解了“.Net设计模式之抽象工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.Net设计模式之抽象工厂模式怎么实现”吧!一、动机(Motivation)在软件系统...
    99+
    2023-06-30
  • .Net创建型设计模式之抽象工厂模式(Abstract Factory)
    目录一、动机(Motivation)二、意图(Intent)三、结构(Structure)四、模式的组成五、抽象工厂的具体代码实现客户程序:应用到具体程序(现代风格):改造第一种改造...
    99+
    2024-04-02
  • Java创建型设计模式之抽象工厂模式(Abstract Factory)
    目录抽象工厂模式概述产品等级结构与产品族优缺点主要角色抽象工厂模式的基本使用创建抽象产品创建具体产品创建抽象工厂创建具体工厂客户端执行抽象工厂模式 概述 抽象工厂模式(Abastra...
    99+
    2024-04-02
  • Golang设计模式中抽象工厂模式详细讲解
    目录抽象工厂模式概念示例抽象工厂模式 抽象工厂模式是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类。 抽象工厂定义了用于创建不同产品的接口, 但将实际的创建工...
    99+
    2023-01-11
    Go抽象工厂模式 Go设计模式
  • java设计模式之抽像工厂详解
     一、概念  提供一个创建一系列相关或相互依赖对像的接口,而无需指定它们具体的类。二、模式动机  这一系列对像之间是相互依赖的,相当于一个产品族 三、模式的结构通过上图我们可以清楚的看到抽像工厂模式包括以下4个角色:  ...
    99+
    2023-05-31
    java 设计模式 抽像工厂
  • 举例讲解Python设计模式编程的代理模式与抽象工厂模式
    代理模式 Proxy模式是一种常用的设计模式,它主要用来通过一个对象(比如B)给一个对象(比如A) 提供'代理'的方式方式访问。比如一个对象不方便直接引用,代理就在这个对象和访问者之间做了中介 你先设想:一...
    99+
    2022-06-04
    模式 抽象 工厂
  • Java设计模式之简单工厂 工厂方法 抽象工厂深度总结
    目录工厂模式介绍好处常见的应用简单工厂(Simple Factory)适用场景角色分配:应用案例:优缺点:简单工厂实现:工厂方法(Factory Method)适用场景角色分配:应用...
    99+
    2024-04-02
  • Java设计模式笔记之抽象工厂代码示例
    上一篇说到了工厂模式,那么学习了工厂模式,抽象工厂也得学习一下。实际上,抽象工厂模式实际上就是在工厂模式的基础上再嵌套一层工厂模式而已,通过父工厂制造子工厂。只是,也并不完全是嵌套一层,各个工厂会被抽象成一个集多个工厂共同点的抽象类。通过工...
    99+
    2023-05-30
    java 设计模式 ava
  • 深入理解Java设计模式之简单工厂模式
    目录一、什么是简单工厂模式二、简单工厂模式的结构三、简单工厂模式的应用场景四、简单工厂模式和工厂方法模式区别五、简单工厂模式和策略模式的异同六、简单工厂模式的优缺点七、简单工厂模式的...
    99+
    2024-04-02
  • 举例讲解Python设计模式编程中对抽象工厂模式的运用
    抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 优点:易于交换“产品系列”,只要更改相应的工厂即可。 缺点:建立产品的时候很繁琐,需要增加和修改很多东西。 优化1:为了避...
    99+
    2022-06-04
    模式 中对 抽象
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作