设计模式之二 abstract factory模式

设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML) 立即下载

要点:
1、如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的静态工厂完全可以;
2、“系列对象” 指的是这些对象之间相互依赖、或作用的关系,例如游戏场景当中的“房屋”和“道路”的依赖,“道路”与“地道”的依赖;
3、工厂模式主要应用于对新系列的变动,其缺点在于难于应付新对象的需求变动;
4、Abstract Factory模式经常与Factory Method模式共同组合来应对“对象创建”的需求变化;

代码示例:

using System;

namespace Design_Pattern
{

 
public class  Computer
 {
  
private RAM Ram;
  
private CPU Cpu;
  
public Computer(RAM ram,CPU cpu)
  {
   
this.Ram =ram;
   
this.Cpu =cpu;
   
   Console .WriteLine(A Computer 
is Composed! +this.Ram + +this.Cpu );
  }
 }

 
public abstract class RAM
 {
  
public abstract  Computer ComposeAComputer(CPU cpu);
 }
 
public abstract class CPU
 {
 
public abstract  Computer ComposeAComputer(RAM ram);
 }
 


 
public class pcRAM:RAM
 {
  
public override Computer ComposeAComputer(CPU cpu)
  {
   Console .WriteLine (pcComputer...);

   
return new Computer(this,cpu);
  }

  
 }

 
public class pcCPU:CPU
 {
  
public override Computer ComposeAComputer(RAM ram)
  {
   Console .WriteLine (pcComputer...);

   
return new Computer(ram,this);
  }

 }


 
public class macRAM:RAM
 {
  
public override Computer ComposeAComputer(CPU cpu)
  {
   Console .WriteLine (MacComputer...);
   
return new Computer(this,cpu);
  }

  
 }

 
public class macCPU:CPU
 {
  
public override Computer ComposeAComputer(RAM ram)
  {
   Console .WriteLine (MacComputer...);
   
return new Computer(ram,this);
  }

 }
 
 
public abstract class abstractFactory
{
       
public abstract  RAM CreateRam();
   
public abstract CPU CreateCpu() ;
}

 
public class PcFactory:abstractFactory
 {
  
public override RAM CreateRam()
  {
   
return new pcRAM();
  }
  
public override CPU CreateCpu()
  {
   
return new pcCPU();
  }

 }


 
public class MacFactory:abstractFactory 
 {
  
public override RAM CreateRam()
  {
   
return new macRAM();

  }
  
public override CPU CreateCpu()
  {
   
return new macCPU();
  }


 }

 
class ITMarket
 {
  
private RAM ram;
  
private CPU cpu;
  
public ITMarket(abstractFactory factory)
  {
   
this.ram =factory.CreateRam();
   
this.cpu =factory.CreateCpu();
  }
  
public void Run()
  {
   ram.ComposeAComputer(cpu);
   cpu.ComposeAComputer(ram);
  }

 }

 
class ClientApp
 {
  
public static void Main(string[] args)
  {
   Console .WriteLine(PC Factory..... );
   abstractFactory pcfactory
=new PcFactory ();
   ITMarket itMarket
=new ITMarket (pcfactory);
   itMarket .Run ();

   Console .WriteLine(MAC Factory..... );
   abstractFactory macfactory
=new MacFactory();
   itMarket 
=new ITMarket (macfactory);
   itMarket .Run ();
  }
 }

    

}

手把手教你学Simulink——基于电机驱动系统的场景实例:永磁同步电机(PMSM)在电动汽车中的矢量控制仿真 随着全球对环境保护的关注增加,电动汽车(Electric Vehicle, EV)因其环保特性而受到广泛关注。永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)由于其高效率、高功率密度和良好的动态响应性能,在电动汽车驱动系统中得到了广泛应用。矢量控制(Field-Oriented Control, FOC)是实现PMSM高性能控制的关键技术之一,它能够实现对电机转矩和磁场的独立控制,从而达到类似直流电机的控制效果。本文将详细介绍如何使用来构建一个。 阅读详情

相关推荐

STC15单片机双串口通信实战:串口2配置与多设备交互

本文详细介绍了STC15单片机双串口通信的实战配置,重点解析串口2的硬件连接、寄存器设置及多设备交互实现。通过实际项目案例和完整代码示例,帮助开发者快速掌握STC15串口2的配置技巧,解决常见通信问题,提升嵌入式系统开发效率。

weixin_29174013的博客 255

Abstract Factory(抽象工厂) 模式

8.1 Abstract Factory 模式   通常,我们不会将 “抽象的” 这个词与 “工厂” 这个词联系到一起。所谓工厂,就是将零件组装成产品的地方,这是一项具体的工作。大在 Abstract Factory 模式中,不仅有 “抽象工厂” ,还有 “抽象零件” 和 “抽象产品” 。抽象工厂的工作是将 “抽象零件” 组装为 “抽象产品”。   在面向对象的编程中 “抽象” 这个词的具体含义指...

矢落叶の博客 1386

扩增子分析|溯源分析在R中的复现:跟着Nature系列文章利用FEAST溯源分析包追溯微生物群落的起源

溯源分析由Liat Shenhav等人在2019年发表在Nature Methods杂志,他们开创的一种分析微生物群落组成结构的方法,通过量化不同微生物样本(来源)在目标微生物群落(汇)中的比例或分数识别微生物群落的潜在来源。该方法自发表以来受到微生物学界广泛关注,该论文截止2024年10月9日已经被引289次,是领域内高被引论文,该方法已经成为Nature,cell系列文章高度关注的方法。

weixin_46814750的博客 3433

AbstractFactory 模式

AbstractFactory模式关键就是将这一组对象的创建封装到一个用于创建对象的类(ConcreteFactory)中,维护这样一个创建类总比维护n多相关对象的创建过程要简单的多。图1AbstractFactoryPattern结构图。AbstractFactory模式就是用来解决这类问题的要创建一组相关或者相互依赖的对象。............

Lce的专栏 367

超酷炫,Python实现交通数据可视化!

此时输出的栅格化参数params的内容存储了栅格坐标系的原点坐标(slon、slat)、单个栅格的经纬度长宽 (deltalon、deltalat)、栅格的旋转角度(theta)、栅格的形状(method参数,其值可以是方形rect、三角形tri和六边形hexa)以及栅格的大小(gridsize参数,单位为米)。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。今天分享一次Python交通数据分析与可视化的实战!

m0_59236127的博客 1697

RK3568 OpenHarmony3.2 NFC 驱动适配(PN7150)II

承接上文《RK3568 OpenHarmony3.2 NFC 驱动适配(PN7150)I》,继续PN7150 NFC模块的整体适配。本文主要介绍包括HDI实现层、框架层以及设备适配层的代码修改思路。具体包括vendor_adaptor、hdi_service等;以及foundation下的frameworks、services等。此外还包括相关三方库libnfc-nci在鸿蒙平台的移植和适配。需要注意的是,当前nfc适配只是基于作者手上的RK3568平台以及相关OpenHarmony3.2的代码。

Martian_Jonas的博客 1360

设计模式之抽象工厂模式(Abstract Factory)

一、抽象工厂模式(Abstract Factory)简介 抽象工厂模式(Abstract Factory)是以一个超级工厂创建其他工厂。它属于创建型模式。抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。 二、抽象工厂模式(Abstract Factory)的优点 抽象工厂模式将具体产品的创建延迟到具体工厂的子类中,这样将对象的创建封装起来,可以减少客户端与具体产品类之间的

程小明的博客 1万+

《ATF(TF-A)专题精讲》目录——146篇,完整覆盖整个ATF的官方文档

本文摘要介绍了Trusted Firmware-A (TF-A)项目的技术文档体系。主要内容包括:项目概述、组件解析(如ARM RAS/RME/CCA等安全技术)、系统设计(启动流程、中断管理、信任链等)、开发指南(构建环境、移植策略)、性能分析、平台支持(涵盖NXP、Marvell、Xilinx等主流芯片厂商)、开发流程规范以及安全通告(CVE漏洞分析)。文档体系全面覆盖了ARM安全固件的技术实现、硬件适配和开发实践,为开发者提供了从理论到实践的完整参考。

Linux内核架构师 1113

设计模式学习(九):Abstract Factory抽象工厂模式

Abstract的意思是“抽象的”,Factory的意思是“工厂”。在Abstract Factory模式中,不仅有“抽象工厂”,还有“抽象零件”和“抽象产品”。抽象工厂的工作是将“抽象零件”组装为“抽象产品”。请大家先回忆一下面向对象编程中的“抽象”这个词的具体含义。它指的是“不考虑具体怎样实现,而是仅关注接口(API )"的状态。例如,抽象方法(Abstract Method)并不定义方法的具体实现,而是仅仅只确定了方法的名字和签名(参数的类型和个数)。

m0_49499183的博客 2225

【宝藏级】全网最全的Pandas详细教程(2万字总结)

【回炉重造】Python之Pandas详细教程前言为什么要学习pandas?什么是Pandas?官网1. Pandas的索引操作索引对象Index {#索引对象index}1. Series和DataFrame中的索引都是Index对象2. 索引对象不可变,保证了数据的安全常见的Index种类Series索引 {#series索引}1. index 指定行索引名2. 行索引3. 切片索引4. 不连续索引5. 布尔索引DataFrame索引1. columns 指定列索引名2. 列索引3. 不连续索引高级索引

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 6万+

OpenCV自学记录(1)——(一拳超人)图像处理基础(图像获取、图像变化)

学习深度学习进行图像分类和目标检测时,要有一定的图像处理的基础。在学习深度学习之前,看了一本《图像处理技术基础》,现在也忘得差不多了,后悔当初没有整理记录下来。现在整理一下图像处理的常用方法,最后实现一个小项目——基于OpenCV的车牌号识别。 OpenCV自学记录(1)——图像处理基础(一)1、图像获取1.1获取图像数据1.2 获取摄像头图像数据2、图像变化2.1 移动(translation)...

qq_40784418的博客 1455

设计模式之抽象工厂模式

抽象工厂模式 1 模式概述    在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化,绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?可以采用以下解决方案——抽象工厂模式。 2 模式动机     工厂方法模式中具体工厂负责生产具体的产品,每一个

maritimesun的专栏 2035

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Abstract Factory Design Pattern 抽象工厂设计模式 - 总结

Abstract Factory Design Pattern 就是一般的Factory Design Pattern的进一步设计,增加一个抽象工厂,然后利用这个工厂可以创建不同基类的类。 当我们需要创建更多不同类的时候就可以使用这个设计模式了。 这个设计模式的代码相对会多点,但是其中的思想就是一般Factory Design Pattern,然后集合更多的基类,看起来挺大的一个设计模式,其思

靖空间 1617

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

设计模式C++ 笔记一 创建型模式(Factory、abstract factory、singleton)

面向对象的三大特性:封装、继承、多态 追求:高内聚,低耦合 1、Factory模式: 引入原因:为了提高内聚,降低耦合,会抽象出一些类的公共接口形成抽象基类或接口,在每次用到子类时都要使用new ***,这就要求知道子类的名称,同时也影响了程序的扩展性和维护变得困难。另一种情况时在父类中并不知道要实例化哪一个具体的子类,例如a中用到类B,但B是一个抽象类 Factory功能:1)定

moonboat0331的专栏 901

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

设计模式讨论之abstract factory篇

设计模式讨论之abstract factory篇有人说过,“不写1M行代码,不能看设计模式。”但似乎设计模式并非那么神奇,下面用笔者的一点粗浅认识,讨论一下abstract factory设计模式的主要部分。首先,为什么要用设计模式?GOF的设计模式主要是用来减小耦合和提高复用的。而面向对象的主要原则就是能private的,就不要protected;能protected,就不要public

xxcc的专栏 2438

设计模式-Abstract Factory模式

        还是一个创造型模式,可以简单的认为,创造型模式就是对用户使用new的一个封装,封装作为面向对象一个重要的特性,它绝对不是一对大括号那么简单,他重要的是封装变化点.如果没有变化,那就别封装吧,直接让用户new吧,这样效率是最高的,但因为会有变化,所以才会有面向对象和设计模式.抽象工厂是应对这样的一系列变化的,比如我们最初需要一个road类,用以表现我们游戏项目的道路,那么,我们可以简

Lance的专栏 746

设计模式1——Abstract Factory模式(C++实现)

Factory

BE A CREATOR 1060

设计模式一:abstract factory

笔记:Abstract Factory 1.目的       创建相关或者相互依赖的一组对象(这些对象具有某些共同的属性),创建之前并不知道这些对象的具体类型。 2.结构图:       如上图,我们可以看到system 直接使用的是AbstractFactory, AbstractProductA, AbstractProductB。系统并不知道ConcreteFactory,具体的产品。 用户

zhaodewei2004的专栏 659

[设计模式]Abstract Factory和Builder

9/9/2005    看到董董的帖子,想起来一直说要写读书笔记来着。     第一次读设计模式是在03年末,那次真的是囫囵吞枣,几乎没有收获,只是认识了原来C++可以这样设计程序。书被同学弄丢后一直没有温习,直到前些日子买回来了重读,才开始领略Design的魅力。     先写写我对Abstract Factory和Builder的理解吧。     黑体字表示模式名,斜题字表示是抽象

BLOG@JayXie.COM 1584

设计模式(Java)—Abstract Factory模式

抽象工厂的工作是将“抽象零件”组装为“抽象产品”。 在Abstract Factory模式中将会出现抽象工厂,它将会抽象零件组装为抽象产品。也就是说人们并不关心零件的具体实现,而只关心接口,我们仅使用该接口将零件组装成为产品。 在Tempate Method模式和Builder模式中,子层这一层负责方法的具体实现,在Abstract Factory模式也是一样的。在子类这一层中有具体的工厂,它...

zoinsung_lee的博客 621

《设计模式》之Creational模式:Abstract Factory

对象创建:Abstract Factory 目的 提供一个可以创建一族关联的或者依赖的对象,而不需要指定它们具体的类。 有时也可称为 Kit 驱动 假设有一个用户接口工具箱,它可以支持多种不同的观感标准,例如Motif和Presentation Manager。不同的观感标准定义了不同的外观和用户界面行为,例如滚动条、窗口和按钮。要想在不同的观感标准之间方便的迁移,一个应用不应该写

天天吃吃 706

设计模式2--Abstract Factory Design Pattern In C++

最关键的特性是它允许派生类访问基类中的受保护成员。这意味着如果一个基类中的成员被声明为。AFDP 定义了一个抽象类来创建相关的家族对象但未指定其具体子类。1.你需要系统独立于对象的创建、组合和表示方式。,则任何直接或间接的派生类都可以访问这些成员。3.系统需要配置多个对象系列之一。2.显示接口而不是实现。成员即使在派生类中也是不可访问的。1.AFDP(抽象工厂设计模式)3.为什么/何时使用AFDP。

dc爱傲雪和技术 522

设计模式一(Factory Method,Abstract Factory)

Factory Method模式:Factory Method模式使一个类的实例化延迟到子类,具体来讲,就是Factory Method模式将创建对象实例的责任转移到工厂类,也就是说在工厂类里面,定义对象的实例化。 Abstract Factory模式:Abstract Factory模式是一系列对象的创建,所以在抽象工厂类里面要创建一系列的对象的实例化,而不是单个对象的实例化。 切记这一系

ainibaifenbai的专栏 774

java设计模式——Abstract Factory模式

java设计模式——Abstract Factory模式 1、Abstract Factory(抽象工厂)模式简介 抽象工厂模式:相对于builder(建造者)模式来说,抽象工厂模式是围绕一个超级工厂创建其他工厂,而非在一个工厂内去定义他需要哪些具体功能。在抽象工厂模式中,可以根据不同的接口来区分超级工厂下不同的工厂。 意图:提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类。 使...

slowlysheep的博客 1805

Design Pattern: Abstract Factory 模式

假设您要制作一个对话方块(Dialog)元件,您希望的是这个对话方块可以有不同的视感(Look-and- feel),最基本的想法是,藉由Setter将不同视感的元件设定给这个对话方块,例如: CustomDialog.java public class CustomDialog { private IButton button; private ITextField...

Chinaxxren 110

C++设计模式笔记(09) - Abstract Factory 抽象工厂

C++设计模式笔记(08) - Factory Method工厂方法: https://blog.youkuaiyun.com/mofan6930/article/details/104605165 参考书籍: 《设计模式:可复用面向对象软件的基础》 《Head First 设计模式》 参考课程:《C++设计模式》-李建忠 1.动机(Motivation) ▷在软件系统中,经常面临着“...

Fista的笔记本 324
上一篇: 设计模式之一 singleton模式
下一篇: 系统构架设计应考虑的因素
jackymrcoco
博客等级 码龄21年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值