工厂方法模式于抽象工厂模式

工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)比较 阅读详情

一:工厂方法模式

       工厂方法模式是对简单工厂模式的改进,增加了一个抽象工厂类,工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际工作推迟到子类中。


#!/usr/bin/env python
# -*- coding:utf-8 -*-

#工厂方法模式

class LeiFeng:
    def Sweep(self):
        print "LeiFeng sweep"

class Student(LeiFeng):
    def Sweep(self):
        print "Student sweep"

class Volenter(LeiFeng):
    def Sweep(self):
        print "Volenter sweep"

class LeiFengFactory:
    def CreateLeiFeng(self):
        temp = LeiFeng()
        return temp

class StudentFactory(LeiFengFactory):
    def CreateLeiFeng(self):
        temp = Student()
        return temp

class VolenterFactory(LeiFengFactory):
    def CreateLeiFeng(self):
        temp = Volenter()
        return temp

if __name__ == "__main__":
    sf = StudentFactory()
    s=sf.CreateLeiFeng()
    s.Sweep()
    sdf = VolenterFactory()
    sd=sdf.CreateLeiFeng()
    sd.Sweep()

二:抽象工厂模式

     抽象工厂模式 :提供一个创建一系列相关或互相依赖对象的接口,而无需指定他们具体的类。解决的是多产品多系列的问题。不同的用户可以比作 windows 或者 linux。两个工厂配合起来解决一个用户(相互依赖)!


#!/usr/bin/env python
# -*- coding:utf-8 -*-

__author__ = 'Andy'
"""
大话设计模式
设计模式——抽象工厂模式
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的类
"""
import sys

#抽象用户表类
class User(object):

    def get_user(self):
        pass

    def insert_user(self):
        pass

#抽象部门表类
class Department(object):

    def get_department(self):
        pass

    def insert_department(self):
        pass


#操作具体User数据库类-Mysql
class MysqlUser(User):

    def get_user(self):
        print 'MysqlUser get User'

    def insert_user(self):
        print 'MysqlUser insert User'

#操作具体Department数据库类-Mysql
class MysqlDepartment(Department):

    def get_department(self):
        print 'MysqlDepartment get department'

    def insert_department(self):
        print 'MysqlDepartment insert department'

#操作具体User数据库-Orcal
class OrcaleUser(User):

    def get_user(self):
        print 'OrcalUser get User'

    def insert_user(self):
        print 'OrcalUser insert User'

#操作具体Department数据库类-Orcal
class OrcaleDepartment(Department):

    def get_department(self):
        print 'OrcalDepartment get department'

    def insert_department(self):
        print 'OrcalDepartment insert department'

#抽象工厂类
class AbstractFactory(object):

    def create_user(self):
        pass

    def create_department(self):
        pass

class MysqlFactory(AbstractFactory):

    def create_user(self):
        return MysqlUser()

    def create_department(self):
        return MysqlDepartment()

class OrcaleFactory(AbstractFactory):

    def create_user(self):
        return OrcalUser()

    def create_department(self):
        return OrcalDepartment()

if __name__ == "__main__":

    db = sys.argv[1]
    myfactory = ''
    if db == 'Mysql':
        myfactory = MysqlFactory()
    elif db == 'Orcal':
        myfactory = OrcaleFactory()
    else:
        print "不支持的数据库类型"
        exit(0)
    user = myfactory.create_user()
    department = myfactory.create_department()
    user.insert_user()
    user.get_user()
    department.insert_department()
    department.get_department()


避坑指南:Docker部署PaddleOCR-VL服务时,关于flash-attn安装、端口映射和模型加载的那些坑 本文详细记录了Docker部署PaddleOCR-VL服务时遇到的常见问题及解决方案,包括flash-attn安装、GPU兼容性检查、容器生命周期管理、模型加载优化等关键环节。特别针对不同GPU架构提供了flash-attn的安装策略,并分享了端口映射、配置文件处理等实用技巧,帮助开发者高效避坑。 阅读详情

相关推荐

LabVIEW实战:3步搞定Excel模板数据填充(附完整VI源码)

本文提供了一个高效的LabVIEW Excel报表自动化方案,通过使用命名区域定位和动态文件管理,实现数据的精准、动态填充。文章详细阐述了如何构建可复用的数据填充引擎,包括文本、表格数据及图表的写入,并分享了主程序流程、错误处理及性能优化等进阶技巧,帮助工程师彻底摆脱手动操作,提升工作效率。

weixin_29233333的博客 276

简单工厂模式、工厂模式以及抽象工厂模式(具体)

抽象工厂模式:我们现在要对mysql/oracle数据库中的User表进行操作,User表定义如下:public class User { private int uid; private String uname; public int getUid() { return uid; } public void setUid(int ui...

cosmos_lee 8万+

MIUI升级后录音神秘消失?别慌!手把手教你从Android/data目录找回宝贵录音文件

本文详细解析了MIUI升级后录音文件消失的原因,并提供了从Android/data目录找回录音文件的实用指南。通过技术分析和步骤演示,帮助小米手机用户解决录音文件丢失问题,同时分享预防措施和高级恢复方案,确保重要录音数据安全。

weixin_30696427的博客 281

设计模式之-工厂模式和抽象工厂模式

1、工厂方法模式(Factory Method):就是定义了一个创建对象的接口,但是由子类决定要实例化的类是那个。工厂方法让类把实例推迟到子类,工厂方法模式通过子类决定创建的对象是什么,来达到对对象创建过程的封装。 举个栗子:比如说 发送短信和邮件 ,我们可以定义一个统一的接口来发送邮件和短信。子类来实现这个接口进而进行不同的发送操作。 首先创建一个发送接口类,然后一个发送方法 2、邮件类和短信...

有一种努力叫做靠自己 374

PMAC上位机通信原理(C#)

基础是引用 两个 ODT dll 原理是先注册到communication.AsyncDataAvailable事件中去 if (bSuccess1) { communication.AsyncDataAvailable += communication_AsyncDataAvailable; } bool bSuccess2 = communication1.GPAsciiConnect(strIP, iPort, strName, strPassword); i

weixin_45507349的博客 1087

手把手教你用示波器测试DDR5 DRAM信号完整性(附眼图分析技巧)

本文详细介绍了如何使用示波器测试DDR5 DRAM信号完整性,包括眼图分析技巧。从DDR5的核心挑战、测试设备选型到实测工作流程,提供了全面的指导。特别强调了DFE功能验证和系统级协同测试,帮助工程师解决信号完整性问题,提升测试效率。

g2h3i4j5的博客 1152

java 三种工厂模式(简单工厂+工厂方法+抽象工厂)

一、简单工厂模式 概述   简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的 实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法模式,它属于类创建型模式。 工厂模式结构图 简单工厂模式角色   在简单工厂模式结构图中包含如下几个角色: Factory(工厂角色):工厂角色即工厂类,它是简单...

java小菜鸡成长之路 1万+

从开通VPS到搭建宝塔面板全教程

你在输入域名(此时我们可能没有类似aaa.com这样的域名,所以要输入VPS的IP地址)的时候,下面的根目录也会跟着变动,等输入完成后,你可以把根目录再改回成/www/wwwroot/dq。这时,在你的浏览器中,输入外网面板地址的URL,输入username和password,即可登陆宝塔面板。第一次登陆,需要绑定你的宝塔账号,你可以到宝塔的注册界面,用手机注册一个,然后绑定,首先看一下你的VPS操作系统是什么类型的(其实你在选择VPS的时候,就已经选定了,我选择的事Centos系统)。

kxltsuperr的专栏 3734

工厂方法模式和抽象工厂模式

工厂方法模式 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 在工厂里面可以对对象的创建做严格的定义,client端直接通过工厂创建出来就可以使用了。 public abstract class Product { //产品抽象类 public abstract void method(); } public class ConcreteProductA extends P...

Yigit_dev的博客 1万+

Openclaw第3章:进阶部署

本章面向需要在特定环境中稳定运行 OpenClaw 的用户,介绍 Windows、Linux、Docker 以及 Cloudflare Workers 四种进阶部署方式。每种方式各有侧重:Windows 部署适合桌面用户日常使用,Linux 部署适合开发者,Docker 部署适合追求环境隔离的运维场景,Cloudflare Workers 部署则适合希望获得全球边缘网络加速的用户。读者可根据自身环境和需求选择合适的方案,完成本章后可继续阅读第4章了解维护升级流程。

Maynor的博客 1295

MinerU PDF解析工具:从安装配置到本地部署与API调用的全流程指南

MinerU是由上海人工智能实验室开源的高质量PDF解析工具,可将包含图片、公式、表格的复杂PDF转换为Markdown和JSON格式。安装前需准备Python 3.10-3.13环境,推荐使用8核CPU和32GB内存。支持通过HuggingFace或ModelScope下载模型,国内用户建议使用ModelScope源加速下载。配置文件中可设置本地模型路径,支持多种语言识别和两种解析后端(Pipeline和VLM)。输出包含可视化文件、内容文件和中间结果文件,并提供了完整的Python API调用示例。

算法工程师 2027

简单工厂模式,工厂方法模式与抽象工厂模式学习总结

一、概念及类图1、简单工厂模式(静态工厂模式) 在简单工厂模式中,工厂类可以根据参数的不同返回不同的类的实例。 2、工厂方法模式(多态模式) 工厂方法模式的核心是抽象工厂类Factory,各种具体工厂类继承抽象工厂类并实现在抽象工厂类中定义的工厂方法,从而让客户只关心抽象产品和抽象工厂,不用管具体返回的是哪一种具体产品,也不用关心它是如何被具体工厂创建的。 3、抽象工厂模式 该模式

晓风残月龙 2320

190、LLC谐振变换器的样机调试实战(问题定位)

这篇实战笔记总结了LLC谐振变换器样机调试中的五大典型问题及解决方案:1)空载炸机源于谐振电容纹波电流能力不足;2)轻载啸叫因控制环路不稳定,需调整突发模式阈值;3)MOSFET过热由死区时间不当导致,需精确优化实现ZVS;4)输出纹波大由PCB布局耦合引起,需优化共模抑制;5)启动过冲需延长软启动时间。作者强调调试需结合示波器、热成像仪等工具,理论计算与实测并重,并详细记录每次参数调整。文章指出LLC调试是不断试错的过程,关键是通过现象分析本质原因。

Jack010169的博客 48

小谈抽象工厂模式与工厂方法,Abstract Factory Pattern and Factory Method

问题:从我所阅读的材料中,我看到:工厂方法模式允许你定义一个方法,这个方法可以创建一个实实在在的商品,但是却隐藏了实现细节,这样客户(client)可以得到产品。我第一个问题是关于抽象工厂:是不是抽象工厂模式只允许你创建一系列对象而不是仅仅一个对象?是不是抽象工厂只会根据你调用的方法返回一个很大的对象,或者许多对象?第二个问题是,我不是很理解这样一句话: 使用抽象工厂模式,一个类的责任就是实例化

请叫我搞向 878

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

设计模式深度解析:工厂方法模式与抽象工厂模式的深度对比

本文旨在深入对比软件设计模式中的工厂方法模式和抽象工厂模式。工厂方法模式侧重于定义一个用于创建对象的接口,让子类决定实例化哪一个类。它提供了一种封装机制,将对象的创建与使用分离,降低了耦合度。而抽象工厂模式则提供了一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。这种模式具有更强的扩展性,能够适应更为复杂的产品结构。通过对比分析,我们发现,两种模式各有优势,工厂方法模式更适用于单一产品的创建,而抽象工厂模式在处理产品族问题时更为得力。在选择使用哪种模式时,需根据具体的应用场景和需求进行综合考量

制定明确可量化的目标,坚持默默的做事。 9903

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

工厂模式(Factory Pattern)之简单工厂,工厂方法模式(Factory Method Pattern),抽象工厂模式(Abstract Factory Pattern)

《Head First》介绍了工厂模式的3个内容: 一、简单工厂 简单工厂并非一个模式,反而像是一个编程习惯,其本质是抽出了对象复杂多变的实例化过程到另外一个单独的类,以保证其他代码的不变。 通常是实例化的对象是拥有多类型的情况: 案例:可以用实例化水果派的例子 public class PatternDemo { public static void main(String[]

JohnZ的专栏 1180

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

工厂方法模式与抽象工厂模式的区别

很多程序员分不清楚几个工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)。在前面的博文(工厂方法模式)中,我已经简单说明了简单工厂模式与工厂方法模式的区别,这里我简单归纳说明一下工厂方法模式与抽象工厂模式的区别。这是我理解玩抽象工厂模式后的笔记。

好刹那的专栏 2562

工厂方法模式与抽象工厂模式的深度对比

本文旨在深入对比软件设计模式中的工厂方法模式和抽象工厂模式。工厂方法模式侧重于定义一个用于创建对象的接口,让子类决定实例化哪一个类。它提供了一种封装机制,将对象的创建与使用分离,降低了耦合度。而抽象工厂模式则提供了一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。这种模式具有更强的扩展性,能够适应更为复杂的产品结构。通过对比分析,我们发现,两种模式各有优势,工厂方法模式更适用于单一产品的创建,而抽象工厂模式在处理产品族问题时更为得力。在选择使用哪种模式时,需根据具体的应用场景和需求进行综合考量

danci_bto的博客 1729

抽象工厂模式,工厂方法模式区别

抽象工厂模式 转载自:https://www.shiyanlou.com/courses/document/867 一、本节目标我们本节课程主要介绍【抽象工厂模式】的相关知识,将会涉及以下内容: 什么是抽象工厂模式 抽象工厂模式类图 抽象工厂模式代码 抽象工厂模式应用 工厂方法模式、抽象工厂模式区别 二、什么是 抽象工厂模式抽象工厂模式(Abstract Fact

SoftStar的专栏 4679

工厂方法模式和抽象工厂模式有什么区别?在什么情况下使用它们?

工厂方法模式关注于创建单个产品,它通过定义一个抽象的工厂类,该工厂类包含一个抽象的工厂方法,具体的产品创建由子类工厂来实现。每个具体的工厂类都负责创建一种具体的产品,这样就实现了产品的创建和工厂的分离。抽象工厂模式关注于创建一组相关的产品,它引入了一个抽象的工厂接口,该接口包含一组抽象的工厂方法,每个工厂方法用于创建一类相关的产品。总之,工厂方法模式适用于创建单一产品,具有更多的灵活性,而抽象工厂模式适用于创建一组相关的产品,具有更强的扩展性和变化适应性。

越努力越幸运。 816

工厂方法模式与抽象工厂模式

工厂模式与抽象工厂模式C++实现

追赶时代的博客 1688

简单工厂模式、工厂方法模式、抽象工厂模式

涉及代码地址:https://gitee.com/w1402943677/Factory 涉及代码地址:https://gitee.com/w1402943677/Factory 一、简单工厂模式、工厂模式、抽象工厂模式的区别 简单工厂模式:① 一个抽象产品类,可以派生出多个具体产品类。        ② 一个具体工厂类。        ③ 这个具体工厂类能选择创建一个具体产品类的实例。 工厂方法...

qq_34092585的博客 4661

简单工厂模式,工厂方法模式,抽象工厂模式总结-java版

关于简单工厂模式,工厂方法模式,抽象工厂模式的一次总结 模式 定义 简单工厂模式 定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。 工厂方法模式 定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类 抽象工厂模式 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 P...

海旋风的博客 3911

抽象工厂模式与工厂方法模式的区别

抽象工厂模式与工厂方法模式的区别

phmatthaus的专栏 452
上一篇: 结构体
下一篇: linux中的自旋锁和信号量
runner668
博客等级 码龄11年 161粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值