简单工厂、工厂方法、抽象工厂模式实验报告

简单工厂、工厂方法、抽象工厂模式实验报告
简单工厂、工厂方法、抽象工厂模式实验报告

软件实验报告

专业:软件工程课程:设计模式

学号:11111111姓名:某某某班级:111111级软件工程

图1 简单计算器

二、将类图修改为如图2所示,然后修改程序。

三种工厂模式区别

工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 区别: 工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。 看了网络上很多关于设计模式的方法,有的模式看起来相似,但本质还是区别很大的.像简单工厂,工厂方法和抽象工厂就有很明显的区别. 有一个比较好理解的例子,在这跟大家介绍下: 1.如果一个后花园只种蔬菜类,那么就用简单工厂就可以了. 2.如果后花园蔬菜品种繁多.得用工厂方法才可以,把共有的东西抽象出来. 3.如果要扩大后花园的规模,比如一个在北方,一个在南方,这样工厂方法就无法实现了,就应当用抽象工厂,把各种各样的植物,又组成一个后花园. 所以我个人认为,简单工厂是一个工厂只生产一类的产品,面对的是具体的类,工厂方法是可以生产不同的产品,把公共的方法抽象出来,然后进行创建各种各样的产品.抽象工厂把几种产品划出共同的东西,把相互依赖的对象抽象出来,只要实现这些接口就可以得到不同的产品. 具体例子: 1.简单工厂: using System; public interface ICar { void run(); } public class BMWCar : ICar { public void run() { Console.WriteLine("BMWCar run"); } }

杂牌液晶进入工程模式方法

组装液晶,杂牌液晶的常用总线进入方法有下面这些 方法1 遥控器按下菜单键后显示OSD菜单,再按6480进入工厂,3秒内完成 方法2 遥控器按下菜单键后显示OSD菜单,再按6087进入工厂,3秒内完成 方法3 遥控器按下菜单键后显示OSD菜单,再按5451进入工厂,3秒内完成 方法4 遥控器按下菜单键后显示OSD菜单,再按3867进入工厂,3秒内完成 方法5 虹星板杂牌液晶进总线,按菜单,再按9527进入工厂,3秒内完成 方法6 按菜单,再按1147 方法7 按菜单,再按9527。 方法8 乐华板是菜单+1147 方法9 菜单 1234 方法10 菜单 2508 方法11 按菜单键然后输入2580 方法12 顶科6M48 总线进入方法信号源 1973即可或按信号源在按2580 方法13 在音量菜单下将平衡项置为0,然后顺序按1-9-6-9即可进入。参考 MST6M48RVS机芯电路调试。 志诚T482_V1 T482-V1液晶万能板总线进入方法MST6M48RHS-LF-Z1-SJ HKC液晶菜单状态下按 9527 或菜单 2580 板号是QT553M V0.3 按信号源在按2580 TSU59V2-LCD平板电视通用数字主板工厂模式设置教程 [佚名][2013年4月18日][0] TSU59V2-LCD平板电视通用数字主板工厂模式设置教程通用兼容代换时出现花屏鬼影文字重影时需要设置项如下: 1.用遥控器按菜单键,再输入密码进入工厂模式设置项: 2.选择特殊设置项进入 3.再选择屏参设置项进入 4.设置项如下: 密码:9527 …… 3.液晶电视驱动板工厂模式常用设置T.VST29.03 [佚名][2013年3月1日][0] 液晶电视驱动板工厂模式常用设置T.VST29.03 工厂模式进入方法: 1.遥控器按下菜单键: 2.屏显示菜单后,连接输入1147. 3.进入工厂模式主菜单. 4.常用设置. 选中: PANEL CONFIG 按右键进入. 花屏鬼影故障: 左右键切换LVDS MAP …… 4.通用液晶电视高清数字主板工厂模式调试实例图示 [华升][2012年10月16日][0] 通用液晶电视高清数字主板工厂模式调试实例图示 1.按下菜单键,输入密码,进入工厂设置:先中参数设置,确认进入 2.先中屏参设置,确认进入常需设置项: 开机模式 ----保存\开\关三种模式, 一次开机选:开 ; 二次开机选:关. 开机LOGO ----开机画面可选三种,LG SONY 三星……

java抽象工厂模式的实现实例

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。 当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。 每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结果。 下面是一个java抽象工厂的实现实例. 我们以交通工具(Vihicle),食品(Foot),武器(Weapon)为抽象产品类为例: 交通工具(Vihicle) public abstract class Vihicle { public abstract void run(); } 食品(Foot) public abstract class Foot { public abstract void printName(); } 武器(Weapon) public abstract class Weapon { public abstract void shoot(); } 这三种抽象产品类都有两种子类的实现: 交通工具(Vihicle)有实现类Car,Broom public class Car extends Vihicle{ public void run(){ System.out.println("冒着烟奔跑中的Car..."); } } public class Broom extends Vihicle{ public void run(){ System.out.println("一路沙尘暴飞奔而来.."); } } 食品(Foot)有实现类Mushroom,Apple

抽象工厂模式

抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意。 每个模式都是针对一定问题的解决方案。抽象工厂模式面对的问题是多产品等级结构的系统设计。 在学习抽象工厂具体实例之前,应该明白两个重要的概念:产品族和产品等级。 产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如AMD的CPU和ADM芯片的主板,组成一个家族。Intel的CPU和Intel芯片的主板,又组成一个家族。而这两个家族都来自于两个产品等级:CPU,主板。一个等级结构是由相同的结构的产品组成,示意图如下: 理解这个产品结构是理解抽象工厂模式的关键所在,所以我不惜花费时间来画此图。如果领悟不到此图的含义,就无法区分工厂方法模式和抽象工厂模式的区别。 从上图可以看出,抽象工厂模式的每个工厂创造出来的都是一族产品,而不是一个或者一组。组是可以随意组合的!其实两个就这点点差别,呵呵,估计现在你已经差不多明白了抽象工厂模式的含义。不废话了,看个例子,真相将大白于天下! 1.3.1 抽象工厂模式在农场中的实现 1.3.1.1 背景 聪明的农场主总是让自己的庄园越来越有价值,“农场”在经历了简单工厂模式和工厂模式后,不断的扩大生产。如今,再次面临新的大发展,一项重要的工作就是引进塑料大棚技术,在大棚里种植热带(Trop ical)和亚热带(Northern)的水果和蔬菜,用以满足市场需求,获取更大的利益。 1.3.1.2 产品角色图 经过分析,对产品角色进行分析得出下图

1.3.1.3 系统设计 经过分析,所谓的各个园丁其实就是工厂角色,而蔬菜和水果则是产品角色。将抽象工厂模式用于农场中,系统设计图如下: 1.3.1.4 实现源码

TCL彩电进入工厂模式方法的汇总

型号: 2910G,2910D,2910DZ,2911,2911D,2911DI,2911Z,2911DZ,2913D,2915DZ,2916D,2927D,2956D ,2965D,2975,2975D,2975DI,2980G,2980D,2980GI,2980DB,2988G,2988D,2988DB,2988DF,2988 DI, AT2911DZ,AT2915DZ,AT2915,AT2927I,AT2939,AT2956,AT29 65,AT2956B,AT2975D,AT2975Z,AT2975F,AT2975I,AT2986Z,AT29 80D,AT2980DB,AT2988DB,AT2988,AT2988D,AT2986Z,AT2990,AT2 990I CPU型号: OM8838,TDA8841 参数: 将普通遥控器打开后盖在线路板上的D04位置插上二极管(IN4148), 方向与板面方向相同,然后,按“菜单”两次,即可进入“工厂模式”的各项目调整(注:21寸按“美化画面”键). 备注: 飞利浦IIC数码29寸机芯 型号: N14K6,21A1,21V1,21G6,21V8,21B1,21B2,N21K1,N21K2,N21K3,N 21B1L,N21B2,N21B6,N21B6J,N21G6,N21E2 CPU型号: TMPA8803,TMPA8809 参数: A、开机后按住主机的“音量▼”键,使音量减到0(不要松放手),同时按遥控器上的“0”键三次,必须在1.5秒

之内完成,即可进入工厂菜单。 B、按工厂遥控器上的“回看”键直接进入。要求:按“方法A”进入工厂D-MODE后,小屏幕系列按“3”数字键选择并设置“DMODE”项为“01”; 大屏幕系列按“6”数字键选择并设置“FACT”项为“开”。以后就可以用遥控器上的“回看”键直接进入或退出工厂菜单。 C、工厂模式的退出: 在“方法B”情况下按遥控器上的“回看”键可以直接退出工厂模式;当调试完毕将“FACT”项设置为“关”,即出厂前需设置“FACT”项为“关”,直接关机即可。 备注: 乐华:东芝超级单芯片S12机芯 型号: AT3416D(F),AT3460D,AT3480DZ,AT3480GI,AT3486DI,AT3486DZ, AT3488DZ,3811DI,3406D,3409D,3416,3416D,3416DI, 3416D(F),3418D,3433D,3433DZ,3438D,3460D,3480GI,3488 GI,3488D,3488BD,34D106 CPU型号: OM8838,TDA8841 参数: 将普通遥控器打开后盖在线路板上的D04位置插上

简单工厂模式、工厂方法模式实验

1. 使用简单工厂模式设计一个可以创建不同几何形状(Shape),如圆形(Circle)、矩形(Rectangle)的绘图工具工厂类,每个几何图形均有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,抛出一个UnSupportedShapeException。绘制类图并编程模拟实现。 代码实现 Shape.java Circle.java

Rectangle.java ShapeFactory.java UnSupportedShapeException.java Test.java

如果向工厂类传入参数“circle”,则返回一个Circle对象,如果传入参数“rectangle”,则返回一个Rectangle对象。现需要增加一个新的三角形Triangle类,如果传入参数“triangle”,则返回一个Triangle对象,对代码进行修改并注意工厂类的变化。 添加一个Triangle类 Triangle.java ShapeFactory类的代码,违背了开闭原则。 ShapeFactory.java

Assert.java 2. 现需要设计一个程序来读取多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF图片读取器(GifReader)用于读取GIF格式的图片、JPG 图片读取器(JpgReader)用于读取JPG格式的图片,所有的图片读取器都有读取图片的方法readImage()。图片读取器对象通过图片读取器工厂ImageReaderFactory来创建,ImageReaderFactory是一个抽象工厂接口,定义了创建图片读取器的工厂方法createImageReader(),其实现类GifReaderFactory用于创建GIF图片读取器(GifReader)对象,

1进入退出工厂模式的方法

1.进入/退出工厂模式的方法 (1)进入方法 按音量键直至音量减到0,同时按下遥控器的屏显键即可进入工厂模式。在工厂菜单 根目录下,按右键或菜单键进入下一页。 (2)退出方法 按屏显键即可退出工厂菜单。 2.进入/退出老化模式的方法 首先,把用户菜单→高级→菜单设置→菜单定时改为“关”;然后使音量减到0,同 时按下遥控器的交替键即可进入老化模式。按遥控器上的电源键,进入待机,再按电源键开机,即可退出老化模式。 3.调试内容及方法 工厂菜单的各项内容如下。 (1)第1页:Soft Version Resolution 1366×768 屏物理分辨率 Refresh Rate 60Hz 刷新频率 Color depth 8bit 颜色分辨率 Processor VII Engine VⅡ功能 Type 22L08IW 机型 CPU 8R03-VER1.0-081104 软件版本 EEP 8R03-081104 E2PROM版本 (2)第2页: ADC Auto Color 白平衡调整 Factory Hot Key 工厂遥控器单键模式开关 Reset 复位E2PROM (3)第3页:Cliem Option(工程机参数设置) PO.CH.CTL 开机频道开关,打开后开机频道的设置才起作用PO.Val.CTL 开机音量开关,打开后开机音量的设置才起作用 TV Func.CTL 调台开关(待取消) Keypand Lock 按键锁定,键控板锁定,等同于童锁 Music CH.CTL 音乐频道开关,打开后,音乐频道的设置才起作用Max Val.CTL 最大音量开关,打开后,最大音量的设置才起作用PowerON CH 开机频道,设置开机的频道 PowerON Val 开机音量,设置开机的音量

工厂模式有以下几种形态

工厂模式有以下几种形态: 简单工厂(Simple Factory)模式 工厂方法(Factory Method)模式,又称多形性工厂(Polymorphic Factory)模式 抽象工厂(Abstract Factory)模式,又称工具箱(Kit或Toolkit)模式 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样。 工厂方法模式是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给子类去作。

工厂方法模式和简单工厂模式在定义上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类,而不像简单工厂模式, 把核心放在一个实类上。工厂方法模式可以允许很多实的工厂类从抽象工厂类继承下来, 从而可以在实际上成为多个简单工厂模式的综合,从而推广了简单工厂模式。 反过来讲,简单工厂模式是由工厂方法模式退化而来。设想如果我们非常确定一个系统只需要一个实的工厂类, 那么就不妨把抽象工厂类合并到实的工厂类中去。而这样一来,我们就退化到简单工厂模式了。 抽象工厂模式是所有形态的工厂模式中最为抽象和最具广泛性的一种形态,抽象工厂模式是工厂方法模式的进一步扩广化和抽象化。如下图:

在抽象工厂模式中,抽象产品(AbstractProduct) 可能是一个或多个,从而构成一个或多个产品族(Product Family)。在只有一个产品族的情况下,抽象工厂模式实际上退化到工厂方法模式。 总结:简单工厂模式是由一个具体的类去创建其他类的实例,父类是相同的,父类是具体的。 工厂方法模式是有一个抽象的父类定义公共接口,子类负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成。 抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。它针对的是有多个产品的等级结构。而工厂方法模式针对的是一个产品的等级结构。

抽象工厂-模式设计

?概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。怎么应对这种变化?怎么绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程式和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 模型图 逻辑模型: 物理模型: 生活中的例子 抽象工厂的目的是要提供一个创建一系列相关或相互依赖对象的接口,而不必指定他们具体的类。这种模式能汽车制造厂所

使用的金属冲压设备中找到。这种冲压设备能制造汽车车身部件。同样的机械用于冲压不同的车型的右边车门、左边车门、右前挡泥板、左前挡泥板和引擎罩等等。通过使用转轮来改动冲压盘,这个机械产生的具体类能在三分钟内改动。 抽象工厂之新解 虚拟案例 中国企业需要一项简单的财务计算:每月月底,财务人员要计算员工的工资。 员工的工资= (基本工资+ 奖金- 个人所得税)。这是个放之四海皆准的运算法则。 为了简化系统,我们假设员工基本工资总是4000美金。 中国企业奖金和个人所得税的计算规则是: 奖金= 基本工资(4000) * 10% 个人所得税= (基本工资+ 奖金) * 40% 我们目前要为此构建一个软件系统(代号叫Softo),满足中国企业的需求。 案例分析 奖金(Bonus)、个人所得税(Tax)的计算是Softo系统的业务规则(Service)。 工资的计算(Calculator)则调用业务规则(Service)来计算员工的实际工资。 工资的计算作为业务规则的前端(或客户端Client)将提供给最终使用该系统的用户(财务人员)使用。

常见显示器工厂模式的进入方法大全

常见显示器工厂模式的进入方法大全(3-2) 2007年03月31日星期六下午 01:19 21.七喜显示器(HEADY) (1)型号:7KIr 面板按键:“Exit”,“↑(Bright)”,“↓(Contrast)”,“Menu”,电源开关“◎” 。 这款显示器的工厂模式进入方法同TCL的该型号显示器。 (2)型号:17F02 面板按键:“-”,“+”,“←”,“→”,电源开关“◎”。 工厂模式:未知。 3)液晶显示器JT160 面板按键:“1”,“↑”,“↓”,“2”,电源开关“◎”。 工厂模式:未知。 (4).产型1772ED机种MOG17F02 面板按键:“MENU”,“←/B”,“→/C”,“EXIT”,电源开关“◎”。 工厂模式:首先关闭显示器电源开关,用手同时按住“MENU”和“→/C”不松手,再打开显示器电源开关,等屏幕出现图像时松开手。 (5).TFT1560PS液晶显示器 面板按键:“AUTO”,“←/B”,“→/C”, “MENU”,电源开关“◎”。 工厂模式:未知。 (6)、型号:G556 BGA 面板按键:“MENU”,“DOWN”,“-”,“+”,电源开关 工厂模式:同时按住“MENU”和“DOWN”键,再打开显示器电源开关。等屏幕出现图像时,按下“MENU”键,这时屏幕上出现的菜单即为工厂模式。 22. 大水牛显示器 该款显示器是由EMC冠捷公司OEM生产。 面板按键:“Exit”,“↑”,“↓”,“Menu”,电源开关“◎”。 工厂模式:在显示器正在工作时,拔掉显示器电源线后,用左手按住“↑”后不松手,再插上电源线,等屏幕出现图像时,这时屏幕上的OSD菜单就是工厂模式。其中的“↓”键,还有图像模式调整功能,连续按下“↓”键,显示器的图像模式会在“ZOOM PICTURE”,“WARM PICTURE”,“NORMAL PICTURE ”,“VIDEO PICTURE”四种模式中进行转换。 23.NEC显示器 (1). FE771SB CRT显示器 面板按键:“Exit”,“←”,“→”,“↑”,“↓”“Select”,“Reset”,电源开关键“●” 。 单独按下“Select”键时,显示器屏幕图像会在高亮模式(Super Bright mode)和普通模式之间转换。 工厂模式:未知。 24、神舟显示器 (1)、J15AA 液晶显示器

5.抽象工厂模式-单例模式答案

(4) 抽象工厂模式 电脑配件生产工厂生产内存、CPU等硬件设备,这些内存、CPU的品牌、型号并不一定相同,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现电脑配件生产过程并绘制相应的类图,绘制类图并编程实现。 interface CPU {

void discribe(); } interface RAM { void discribe(); } class PcCPU implements CPU { public void discribe() { System.out.println("PcCPU"); } } class MacCPU implements CPU { public void discribe() { System.out.println("MacCPU"); } } class PcRAM implements RAM { public void discribe() { System.out.println("PcRAM"); } } class MacRAM implements RAM { public void discribe() { System.out.println("MacRAM"); } } interface ComputerPartsFactory { CPU produceCPU(); RAM produceRAM();

} class PcFactory implements ComputerPartsFactory { public PcCPU produceCPU() { System.out.println("PcCPU produced!"); return new PcCPU(); } public PcRAM produceRAM() { System.out.println("PcRAM produced!"); return new PcRAM(); } } class MacFactory implements ComputerPartsFactory { public MacCPU produceCPU() { System.out.println("MacCPU produced!"); return new MacCPU(); } public MacRAM produceRAM() { System.out.println("MacRAM produced!"); return new MacRAM(); } } class ComputerPartsClient { public static void main(String a[]) { ComputerPartsFactory factory; CPU cpu; RAM ram; factory=(ComputerPartsFactory)XMLUtil.getBean();//Pc OR Mac cpu=factory.produceCPU(); cpu.discribe(); ram=factory.produceRAM(); ram.discribe(); } }

工厂模式的三种类型

工厂模式的三种类型: 1抽象工厂模式是所有形态的工厂模式中最为抽 象和最其一般性的。抽象工厂模式可以向客户端 提供一个接口,使得客户端在不必指定产品的具 体类型的情况下,能够创建多个产品族的产品对 象。 1.抽象工厂(Creator)角色 抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。 2.具体工厂(Concrete Creator)角色 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。 3.抽象(Product)角色 抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 4.具体产品(Concrete Product)角色 抽象模式所创建的具体实例对象 总结:抽象工厂中方法对应产品结构,具体工厂对应产品族。 2工厂方法模式同样属于类的创建型模式又被称 为多态工厂模式。工厂方法模式的意义是定义一个创建 产品对象的工厂接口,将实际创建工作推迟到子类当中。 核心工厂类不再负责产品的创建,这样核心类成为一个 抽象工厂角色,仅负责具体工厂子类必须实现的接口, 这样进一步抽象化的好处是使得工厂方法模式可以使系 统在不修改具体工厂角色的情况下引进新的产品。

1.抽象工厂(Creator)角色 工厂方法模式的核心,任何工厂类都必须实现这个接口。 2.具体工厂(Concrete Creator)角色 具体工厂类是抽象工厂的一个实现,负责实例化产品对象。 3.抽象(Product)角色 工厂方法模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 4.具体产品(Concrete Product)角色 工厂方法模式所创建的具体实例对象 工厂方法模式与简单工厂模式在结构上的不同不是很明显。工厂方 法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具 体类上。 工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工 厂类都有共同的接口,或者有共同的抽象父类。 当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对 象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也 不需要修改客户端,很好的符合了“开放-封闭”原则。而简单工厂 模式在添加新产品对象后不得不修改工厂方法,扩展性不好。 工厂方法模式退化后可以演变成简单工厂模式。 3简单工厂模式属于类的创建型模式,又叫做静态 工厂方法模式。通过专门定义一个类来负责创建 其他类的实例,被创建的实例通常都具有共同的 父类。 1.工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 2.抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 3.具体产品(Concrete Product)角色

抽象工厂模式最贴切的例子

下面就来看一个Demo ,从这个Demo 中看出抽象工厂的优点 先来展现一下具体的类图 上面的类图呢,说明的是有两个具体工厂,一个是Linux 控件的制造,还有一个是Windows 控件的制造, 然后,有两个产品族,一个是WindowsTextBox 和LinuxTextBox 组成的TextBox 产品族,还有一个就是WindowsButton 和LinuxButton 组成的Button 产品族。 下面就来写类了 先来看工厂类吧 namespace AbstractFactory { public abstract class AbstractFactory { //在抽象工厂中,应该包含所有产品创建的抽象方法

public abstract Button CreateButton(); public abstract TextBox CreateTextBox(); } } namespace AbstractFactory { public class WindowsFactory:AbstractFactory { public override Button CreateButton() { return new WindowsButton(); } public override TextBox CreateTextBox() { return new WindowsTextBox(); } } } namespace AbstractFactory { public class LinuxFactory:AbstractFactory { public override Button CreateButton() { return new LinuxButton(); } public override TextBox CreateTextBox() { return new LinuxTextBox(); }

抽象工厂模式abstractfactory

抽象工厂模式 概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具·体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 模型图 逻辑模型: 物理模型: 生活中的例子 抽象工厂的目的是要提供一个创建一系列相关或相互依赖对象的接口,而不需要指定它们具体的类。这种模式可以汽车制造厂所使用的金属冲压设备中找到。这种冲压设备可以制造汽车车身部件。同样的机械用于冲压不同的车型的右边车门、左边车门、右前挡泥板、左前挡泥板和引擎罩等等。通过使用转轮来改变冲压盘,这个机械产生的具体类可以在三分钟内改变。 抽象工厂之新解 虚拟案例 中国企业需要一项简单的财务计算:每月月底,财务人员要计算员工的工资。 员工的工资 = (基本工资 + 奖金 - 个人所得税)。这是一个放之四海皆准的运算法则。

为了简化系统,我们假设员工基本工资总是4000美金。 中国企业奖金和个人所得税的计算规则是: 奖金 = 基本工资(4000) * 10% 个人所得税 = (基本工资 + 奖金) * 40% 我们现在要为此构建一个软件系统(代号叫Softo),满足中国企业的需求。 案例分析 奖金(Bonus)、个人所得税(Tax)的计算是Softo系统的业务规则(Service)。 工资的计算(Calculator)则调用业务规则(Service)来计算员工的实际工资。 工资的计算作为业务规则的前端(或者客户端Client)将提供给最终使用该系统的用户(财务人员)使用。 针对中国企业为系统建模 根据上面的分析,为Softo系统建模如下: 代码: 针对美国企业为系统建模 为了拓展国际市场,我们要把该系统移植给美国公司使用。 美国企业的工资计算同样是: 员工的工资 = 基本工资 + 奖金 - 个人所得税。 但是他们的奖金和个人所得税的计算规则不同于中国企业: 美国企业奖金和个人所得税的计算规则是:

{推荐}CRT显示器进入工厂模式的方法

CRT显示器进入工厂模式的方法

谁家的电视机坏了,图像的颜色乱了,肯定要请电视机维修人员来修。但是大家也许听说过,有时候维修人员到了家里,连螺丝刀都不拿,只是把遥控器“乱”按一通,电视机的故障就解决了。你说奇怪不奇怪? 既然电视机“坏了”可以不用拆机就能修好,那我们的电脑显示器是不是也可以不拆机就能解决一些问题呢? 我们先来分析一下显示器的工作原理:自从显示器采用了总线I2C控制电路以后,显示器的颜色、亮度、对比度、消磁、模式、特殊功能调整、故障检测等都是在显示器内部的微处理器(MPU,也就是类似于台式计算机的CPU)的控制下进行的。当显示器加电开机后,显示器内部的MPU首先加电复位,进行初始化,再接着从显示器内的存储器(一般为串行存储芯片,型号为24C08,24C16或者是93C46,93C56等等,容量为几K字节)中读取显示器的标准工作状态值和上次存储的状态数值,并同时检测当前各部件的工作状态,然后按读取的数值控制相应单元电路工作,同时根据行场信号的极性和行频的不同选定相应的显示工作模式,完成图像和文字的显示。当然,如果显示器的MPU损坏,显示器是肯定不能工作的。 既然数控显示器的白平衡,暗平衡与几何失真等有关参数都可以通过显示器的OSD菜单进行调整,那么换句话说,我们在某些场合下就可以不用拆机就能把显示器的一些故障排除。这就必须说起“显示器的工厂模式”,这和电视机的工厂模式一样,都是一种隐藏的菜单调整功能,用于显示器在出厂前和维修时进行调试。 现在市面上的显示器多数都是屏显OSD控制方式,因为生产厂家的技术保密的原因,每种显示器的工厂模式都只有生产厂家的技术人员和维修人员知道,并且都还人为的设置技术壁垒,不同型号的显示器还设置了不同的工厂模式进入方法。正因为如此,一些本来非常简单的故障也一定返回维修站或返厂才能维修,耽误了许多宝贵的时间,也严重影响了消费者对经销商的满意度。 因此在这里我把自己平时收集整理的显示器工厂模式进入方法写出来,供大家参考。同时,

抽象工厂和建造者模式

实验8 抽象工厂和建造者模式 一、实验目的 1、掌握抽象工厂模式的概念、模式结构、适用场景、优点和缺点。 3、掌握建造者模式的概念、模式结构、适用场景、优点和缺点。 二、实验环境 Windows操作系统,Rational Rose,eclipse、Myeclipse ,VS Studio,记事本等等。 三、实验内容 1、抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。 抽象工厂的模式图如下所示。模式中包含4个角色,抽象工厂、具体工厂、抽象产品和具体产品。

题目描述:我们在上一节讲了女娲造人的故事。人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,记给人类定义性别了,那怎么办? 由于女娲之前的准备工作花费了非常大的精力,比如准备黄土,准备八卦炉等,从头开始建立所有的事物也是不可能的,那就想在现有的条件下重新造人,尽可能旧物利用嘛。怎么才能让人类有爱有恨呢?是神仙当然办法的了,定义互斥的性别,然后在每个个体中埋下一颗种子:异性相吸,成熟后就一定会去找个异性(这就是我们说的爱情原动力)。从设计角度来看,一个具体的对象通过两个坐标就可以确定:肤色和性别。 产品类分析完毕了,生产的工厂类该(八卦炉)怎么改造呢?只有一个生产设备,要么生产出全都是男性,要么都是女性,那不行呀,这么大的翻天覆地的改造就是为了产生不同性别的人类。有办法了!把目前已经有的生产设备——八卦炉拆开,于是女娲就使用了“八卦拷贝术”,把原先的八卦炉一个变两个,并且略加修改,就成了女性八卦炉(只生产女性人种)和男性八卦炉(只生产男性人种),于是乎女娲就开始准备生产了。根据描述,请使用抽象工厂模式,画出UML类图,实现题目描述的功能。 UML类图:

HKC 液晶工厂模式进入方法

联络函 发送:惠科电子(深圳)有限公司各驻外人员 由:惠科电子售后服务部 主题:液晶显示器进入工厂模式与关闭老化信号方法 日期: 2006 年5月10 日共 1 页(含本页) 现工厂生产的液晶进入工厂模式方法为: 一:2023和2023L芯片:开机按住MENU键,断交流电再插上交流电。 1、2023芯片关闭和开启老化信号:进入工厂模式后,选中工厂菜 单倒数第二个图标,会显示“BURNIN MODE”选择“YES 或NO”开启或关闭老化信号。 2、2023L芯片关闭和开启老化信号:进入工厂模式后,选中工厂 菜单中“工具”一项,内有三个选项,选择“BURNIN MODE” 选择ON或OFF开启或关闭老化信号。 二:MST方案,芯片型号:TSUM56AWK-LF。同时按住面板上“DOWN和UP”键,直到工厂菜单出现。 MST方案的芯片开启和关闭老化信号:进入工厂模式后,在工厂菜单里选择“BURNIN”再选择“ON或OFF”开启或关闭老化信号。三:大约在7月份以后生产的液晶进入工厂模式:同时按住面板上“DOWN”和“UP”键,直到工厂菜单出显。 四:大约在7月份以后生产的液晶退出老化信号同时按住“DOWN”和“EXIT”键当屏幕显示“CLOSED”关闭老化信号。

五:带TV功能的液晶进工厂模式:在开机的状态下按住UP+DOWN+MENU;关闭老化信号:在开机的状态下按住MENU,再按POWER键开关机一次。 六:2120芯片的液晶进工厂模式:1、在开机状态下按住UP+DOWN。 3、按住“DOWN”和“EXIT”键当屏幕显示“CLOSED”关闭 老化信号。 六:2075B机型所用的AD板是外购板的关老化信号是:打开用户菜单,在菜单里会显示一个BURING字样闪烁,再同时按住UP+DOWN 键一会就OK。 售后服务部制

抽象工厂简单实例

我的空间主页|空间装扮博客|写新文章相册|上传照片好友|找新朋友档案|留言板我的应用loading.. 我的i贴吧i动态传送门我的动态jljHappyDay 1 | 我的消息(0/0) | 我的空间| 我的应用| 我的i贴吧| 百度空间| 百度首页| 退出踏浪帅的空间https://www.360docs.net/doc/81741853.html, C# 资料收藏主页博客相册|个人档案|好友查看文章 NET设计模式(4): 抽象工厂模式(实例代码)2009-11-29 00:18实例: 大家知道,动物世界中各大陆的动物是不一样的,各种动物可以分成两样,一种食草,一种食肉。食肉的动物吃食草动物。美洲狼属于食肉动物,野牛属于食草动物,美洲狼吃野牛。非洲的狮子属于食肉动物,角马属于食草动物,狮子吃角马。类图如下: 代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace AnimalWorld { // 抽象大陆工厂 abstract class ContinentFactory { abstract public Herbivore CreateHerbivore(); //抽象创建食草动物的类,返回食草类动物 abstract public Carnivore CreateCarnivore(); //抽象创建食肉动物的类,返回食肉类动物 } //非洲大陆,有角马,狮子 class AfricaFactory : ContinentFactory //非洲动物工厂类 { override public Herbivore CreateHerbivore() //实现上面的抽象方法,注意返回类型 { return new Wildebeest(); //实例化一个角马,角马是食草动物 } override public Carnivore CreateCarnivore() //实现上面的抽象方法,注意返回类型 { return new Lion(); //实例化一个狮子,狮子是食肉动物 }

由浅入深学“工厂模式”

由浅入深学“工厂模式”(1) 2007-03-25 17:13 1、传授设计模式中存在的问题 我个人最近对设计模式中的工厂模式进行了比较深入的学习,通过学习感悟出,现在很多设计模式传道者,在讲述设计模式的过程中存在一些问题,使得设计模式变得很难理解。设计模式本身很抽象,但是这些传道者在讲述的过程中,将一个抽象的东西讲的更抽象,从而使我们望而却步。有些人在讲述的时候,没有考虑读者的注意力。比如我在看《C#设计模式》的时候,在讲述抽象工厂模式的时候,直接就进入了一个示例,而且这个例子比较复杂,涉及了比较多的概念、术语,而且还有算法要处理。但是这些和要讲述的核心内容无关,我想要看懂他的示例就要将这个东西都搞懂,就分散了我的注意力。我个人总结,学习设计模式的方法是,首先找到一个突破口,比如可以先学习构造型模式中简单的模式,将它理解、熟练应用。通过对一、两个模式有一个深入的认识之后,再学习其它比较复杂一点的模式就容易多了,这是一种迭代的思想在学习中的应用。另外学习任何一种设计模式的过程应该是具体-抽象-再具体这个的一个过程。这句话的意思是首先通过一个比较具体一点的例子来帮助理解设计模式,在理解之后将你的理解扩展到解决这一类问题,上升到一定的理论高度。然后就是再到具体,也就是应用设计模式,应用理论解决自己遇到的实际问题。 2、学习工厂模式的预备知识: 首先声明这些预备知识并不是工厂模式仅仅需要,因为我先讲述工厂模式,所以在学习工厂模式之前将这些问题提出。 2.1 Upcasting: Upcasting中文翻译有好几个,比如向上类型转换、向上转型、上溯造型。我个人比较喜欢向上转型这个翻译,即简单又含义明确。向上转型这个概念,我在Bruce Eckel的Thinking in c++、Thinking in Java中都看到过,我不是很确定这个概念是否是他提出来的。向上转型是把一个派生类当作它的基类使用。我们将一个更特殊的类型转换到一个更常规的类型,这当然是安全的。派生类是基类的一个超集。它可以包含比基类更多的方法,但它至少包含了基类的方法。向上转型给我们带来的好处就是我们可以将不同的派生通过一种统一的方式进行处理。向上转型带来的弊端就是我们向上转型的过程会丢失派生类的接口。既然有向上转型,也就有向下转型即DownCasting,我们在此不做详细讨论。下面使用一个例子来示例向上转型。 public class Base { public void Test() { MessageBox.Show("OK"); } }

设计模式简单工厂

简单工厂设计模式 目录 1.1摘要 (2) 2.1关键字 (2) 3.1开发工具 (2) 4.1简单工厂模式动机与定义: (3) 4.1.1模式动机 (3) 4.1.2模式定义 (3) 5.1简单工厂模式结构 (4) 6.1简单工厂模式实例: (5) 6.1.1代码分析 (6) 6.1.1.1Product(Shape抽象类)代码: (6) 6.1.1.2ConcreteProduct(Juxing,YuanXing,SanJiao具体产品类)代码:.. 7 JuXing类: (7) YuanXing类: (8) SanJiao类: (8) 6.1.1.3Factory(Factory类)代码: (9) 6.1.1.4 (main类): (10) 6.1.1.5运行结果: (12) 7.1结论 (12)

8.1参考文献: (13) 1.1摘要 本文从面向对象的角度对java接口的概念、作用以及使用它的好处做分析,讲解面向接口编程的方法,结合初步接触软件开发的人员习惯,从简单工厂设计模式的概念和其结构以及用途进行解析,重点讲解简单工厂设计模式在软件开发过程中的作用和好处,通过一些实例来说明简单工厂设计模式的特点。 2.1关键字 面向对象;java接口;接口编程;简单工厂设计模式。 3.1开发工具 Eclipse java语言开发

4.1简单工厂模式动机与定义: 在实际的软件开发过程中有时需要创建一些来自于相同父类的类的实例,为此可以专门定义一个类来负责创建这些类的实例,这些被创建的实例具有共同的父类。在这种情况下,可以通过传入不同的参数从而获取不同的对象,理由Java语言的特征,习惯上将创建其他类实例的方法定义为static方法,外部不需要实例化这个类就可以直接调用该方法来获得需要的对象,该方法也成为静态工厂方法。 4.1.1模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮,矩形按钮等),这些按钮都源自同一个基类,不过在继承基类之后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。 4.1.2模式定义 简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。

相关文档
最新文档