工厂模式的三种类型

工厂模式的三种类型
工厂模式的三种类型

工厂模式的三种类型:

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)角色

简单工厂模式所创建的具体实例对象

在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断

逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的

对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无

需了解这些对象是如何创建以及如何组织的。有利于整个软件体系

结构的优化。

不难发现,简单工厂模式的缺点也正体现在其工厂类上,由于工厂类集中

了所有实例的创建逻辑,所以“高内聚”方面做的并不好。另外,当系统中的具体产品类不断增多时,可能会出现要求工厂类也要做相应的修改,扩展

性并不很好。

软件设计模式复习

创建型模式概述 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等),这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。模式定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 模式分析 将对象的创建和对象本身业务处理分离可以降低系统的耦合度,使得两者修改起来都相对容易。 在调用工厂类的工厂方法时,由于工厂方法是静态方法,使用起来很方便,可通过类名直接调用,而且只需要传入一个简单的参数即可,在实际开发中,还可以在调用时将所传入的参数保存在XML等格式的配置文件中,修改参数时无须修改任何Java源代码。 简单工厂模式最大的问题在于工厂类的职责相对过重,增加新的产品需要修改工厂类的判断逻辑,这一点与开闭原则是相违背的。 简单工厂模式的要点在于:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。 简单工厂模式的不足 在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须修改工厂类,加入必要的处理逻辑,这违背了“开闭原则”。在简单工厂模式中,所有的产品都是由同一个工厂创建,工厂类职责较重,业务逻辑较为复杂,具体产品与工厂类之间的耦合度高,严重影响了系统的灵活性和扩展性,而工厂方法模式则可以很好地解决这一问题。 模式动机 考虑这样一个系统,按钮工厂类可以返回一个具体的按钮实例,如圆形按钮、矩形按钮、菱形按钮等。在这个系统中,如果需要增加一种新类型的按钮,如椭圆形按钮,那么除了增加一个新的具体产品类之外,还需要修改工厂类的代码,这就使得整个设计在一定程度上违反了“开闭原则”。 模式定义 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。 模式分析 工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了面向对象的多态性,工厂方

三种工厂模式区别

工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例。 抽象工厂模式: 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类可以创建多个具体产品类的实例。 区别: 工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。 看了网络上很多关于设计模式的方法,有的模式看起来相似,但本质还是区别很大的.像简单工厂,工厂方法和抽象工厂就有很明显的区别. 有一个比较好理解的例子,在这跟大家介绍下: 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 三星……

(工厂管理)J设计模式之工厂模式(F)

Java设计模式之工厂模式(Factory) 时间:2009-08-04 17:23 来源:未知作者:和水柔石 CSDN IE QQ百度我挖Google POCO Yahoo新浪365Key天极和讯博拉Live奇客鲜果收客饭否叽歪挖客 核心提示:作者:和水柔石一、引子话说十年前,有一个爆发户,他家有三辆汽车(Benz (奔驰)、Bmw (宝马)、Audi (奥迪)看来这人比较爱国,没有日本车),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz 车后跟司机说开奔驰车!,坐上Bmw 后他说开 作者:和水柔石 一、引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz (奔驰)、Bmw (宝马)、Audi (奥迪)看来这人比较爱国,没有日本车),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz 车后跟司机说" 开奔驰车!" ,坐上Bmw 后他说" 开宝马车!" ,坐上Audi 后他说" 开奥迪车!" 。你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放到我们程序语言中来,我们发现C 语言一直是通过这种方式来坐车的!幸运的是,这种有病的现象在OO 语言中可以避免了。下面以Java 语言为基础来引入我们本文的主题:工厂模式!! 二、简介 工厂模式主要是为创建对象提供了接口。工厂模式按照《Java 与模式》中的提法分为三类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用工厂模式的两种情况: 1. 在编码时不能预见需要创建哪种类的实例。 2. 系统不应依赖于产品类实例如何被创建、组合和表达的细节 三、简单工厂模式 顾名思义,这个模式本身很简单,而且使用在业务较简单的情况下。 它由三种角色组成(关系见下面的类图): 1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java 中它往往由一个具体类实现。 2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java 中由接口或者抽象类来实现。 3、具体产品角色:工厂类所创建的对象就是此角色的实例。在java 中由一个具体类实现。

工厂模式系列文章

设计模式概述
在面向对象的编程中,软件编程人员更加注重以前的代码的重用性和可维护性. 设计模式使人 们可以更加简单方便地复用成功的设计和体系结构. 将已证实的技术表述成设计模式也会使新系 统开发者更加容易理解其设计思路. 模式是对前人设计经验的总结. 一般而言,一个模式有四个基本要素
1 模式名称(ptennm) 一个助记名, . atr ae
2 .问题(rbe) 描述了应该在何时使用模式.它解释了设计问题和问题存在的前因后果, polm: 它可能描述了特定的设计问题, 如怎样用对象表示算法等. 也可能描述了导致不灵活设计的类或 对象结构.有时候,问题部分会包括使用模式必须满足的一系列先决条件. 3 .解决方案(ouin slto)描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方 式.因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的 设计或实现, 而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合 (类或对象组 合)来解决这个问题. 4 .效果(osqecs cneune)描述了模式应用的效果及使用模式应权衡的问题.尽管我们描述设计 决策时, 并不总提到模式效果, 但它们对于评价设计选择和理解使用模式的代价及好处具有重要 意义.软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题.因为复用是面向 对象设计的要素之一,所以模式效果包括它对系统的灵活性,扩充性或可移植性的影响,显式地 列出这些效果对理解和评价这些模式很有帮助.
一些基本的设计模式
Asrc Fcoy: 供一个创建一系列相关或相互依赖对象的接口, btat atr 提 而无需指定它们具体的类.
Aatr:将一个类的接口转换成客户希望的另外一个接口.Adapter dpe 模式使得原本由于 接口不兼容而不能一起工作的那些类可以一起工作. Big rde:将抽象部分与它的实现部分分离,使它们都可以独立地变化. Bidr:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. ule Cano epniiiy:为解除请求的发送者和接收者之间耦合,而使多个对象都有机会 hi fRsosblt 处理这个请求.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它. Cmad:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排 omn 队或记录请求日志,以及支持可取消的操作. Cmoie:将对象组合成树形结构以表示"部分opst 整体"的层次结构.它使得客户对单个对象 和复合对象的使用具有一致性. Dcrtr:动态地给一个对象添加一些额外的职责.就扩展功能而言, 它比生成子类方式更 eoao 为灵活. Fcd aae:为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一个高层接口, 这个接口使得这一子系统更加容易使用. FcoyMto atr ehd:定义一个用于创建对象的接口,让子类决定将哪一个类实例化.Fcoy atr Mto 使一个类的实例化延迟到其子类. ehd
Created by PDF Generator (https://www.360docs.net/doc/2f18374985.html,/), to remove this mark, please buy the software.

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进入退出工厂模式的方法

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 开机音量,设置开机的音量

设计模式简单工厂

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

1.1摘要 本文从面向对象的角度对java接口的概念、作用以及使用它的好处做分析,讲解面向接口编程的方法,结合初步接触软件开发的人员习惯,从简单工厂设计模式的概念和其结构以及用途进行解析,重点讲解简单工厂设计模式在软件开发过程中的作用和好处,通过一些实例来说明简单工厂设计模式的特点。 2.1关键字 面向对象;java接口;接口编程;简单工厂设计模式。 3.1开发工具 Eclipse java语言开发 4.1简单工厂模式动机与定义: 在实际的软件开发过程中有时需要创建一些来自于相同父类的类的实例,为此可以专门定义一个类来负责创建这些类的实例,这些被创建的实例具有共同的父类。在这种情况下,可以通过传入不同的参数从而获取不同的对象,理由Java语言的特征,习惯上将创建其他类实例的方法定义为static方法,外部不需要实例化这个类就可以直接调用该方法来获得需要的对象,该方法也成为静态工厂方法。 4.1.1模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮,矩形按钮等),这些按钮都源自同一个基类,不过在继承基类之后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。 4.1.2模式定义 简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。

工厂模式

工厂模式 工厂模式 用工厂方法代替了new操作, 将选择实现类, 创建对象统一管理和控制.从而将调用者(Client)与实现类进行解耦.实现了创建者与调用者分离; 使用场景 JDK中Calendar的getInstance方法; JDBC中Connection对象的获取; MyBatis中SqlSessionFactory创建SqlSession; SpringIoC容器创建并管理Bean对象; 反射Class对象的newInstance; …. 静态工厂模式 静态工厂模式是工厂模式中最简单的一种,他可以用比较简单的方式隐藏创建对象的细节,一般只需要告诉工厂类所需要的类型,工厂类就会返回需要的产品类,而客户端看到的也只是产品的抽象对象(interface),因此无需关心到底是返回了哪个子类 我们以运算符类为例, 解释静态工厂模式. Operator接口 /** * 运算符接口 * Created by jifang on 15/12/7. */ public interface Operator { T getResult(T... args); } 实现类 public class AddOperator implements Operator { @Override public Integer getResult(Integer... args) {

int result = 0; for (int arg : args) { result += arg; } return result; } } public class MultiOperator implements Operator { @Override public Integer getResult(Integer... args) { int result = 1; for (int arg : args) { result *= arg; } return result; } } 工厂 /** * 静态工厂(注: 只返回产品的抽象[即接口]) * 包含两种实现策略 * 1. 根据传入的operator名进行实例化对象 * 2. 直接调用相应的构造实例的方法 * Created by jifang on 15/12/7. */ public class OperatorFactory { public static Operator createOperator(String operName) { Operator operator; switch (operName) { case "+": operator = new AddOperator(); break; case "*": operator = new MultiOperator(); break; default: throw new RuntimeException("Wrong Operator Name: " + operName); } return operator;

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

常见显示器工厂模式的进入方法大全(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 液晶显示器

设计模式试卷

设计模式期中考试试题 一:单项选择(共20道,每道2分) 1、设计模式一般用来解决什么样的问题( ) A.同一问题的不同表相B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2、下列属于面向对象基本原则的是( ) A.继承 B.封装 C.里氏代换D都不是 3、Open-Close原则的含义是一个软件实体( ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对 4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。 A.创建型 B.结构型C行为型D.以上都可以 5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述 A.开-闭原则 B.接口隔离原则 C.里氏代换原则 D.依赖倒转原则 6、设计模式的两大主题是( ) A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 7、“不要和陌生人说话” 是( )原则的通俗表述 A.接口隔离 B.里氏代换 C.依赖倒转 D.迪米特:一个对象应对其他对象尽可能少的了解 8、构造者的的退化模式是通过合并()角色完成退化的。 A.抽象产品B产品C创建者D使用者 9、以下关于简单工厂模式叙述错误的是() A 它属于GoF23种设计模式 B 它是最简单的设计模式之一 C 它是学习其他创建型模式的基础 D 它只需要记住一个简单的参数即可获得所需对象的实例 E 它类中的方法通常为静态方法 F 它返回的类都有一个公共的父类和公共的方法 10、对象适配器模式是()原则的典型应用。 A.合成聚合复用原则 B.里式代换原则 C.依赖倒转原则 D.迪米特法则 D.以上表述全部错误。 11.对于依赖倒转的表述错误的是() A.依赖于抽象而不依赖于具体,也就是针对接口编程。 B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。 C.从选项B的角度论述,一个对象可以有多个接口。 D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。而且不必知道所示用的对象是那个实现类的实例。 E.此题没有正确答案。 12. 现有5个产品族,分布于3各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。那么使用抽象工厂方法模式只需要提供

C#设计模式 之 工厂方法模式

工厂方法模式(Factory Method) 耦合关系: 动机(Motivation): 在软件系统中,由于需求的变化,"这个对象的具体实现"经常面临着剧烈的变化,但它却有比较稳定的接口。 如何应对这种变化呢?提供一种封装机制来隔离出"这个易变对象"的变化,从而保持系统中"其它依赖的对象"不随需求的变化而变化。 意图(Intent): 定义一个用户创建对象的接口,让子类决定实例哪一个类。Factory Method使一个类的实例化延迟到子类。 ----------《设计模式》GOF 结构图(Struct):

生活实例: 适用性: 1.当一个类不知道它所必须创建的对象类的时候。 2.当一个类希望由它子类来指定它所创建对象的时候。 3.当类将创建对象的职责委托给多个帮助子类中的某个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 实例代码: CarFactory类: 1public abstract class CarFactory 2{ 3public abstract Car CarCreate(); 4} Car类: 1public abstract class Car 2{ 3public abstract void StartUp(); 4public abstract void Run(); 5public abstract void Stop(); 6 7} HongQiCarFactory类:

1public class HongQiCarFactory:CarFactory 2{ 3public override Car CarCreate() 4{ 5return new HongQiCar(); 6} 7} BMWCarFactory类: 1public class BMWCarFactory:CarFactory 2{ 3public override Car CarCreate() 4{ 5return new BMWCar(); 6} 7} HongQiCar类: 1public class HongQiCar:Car 2{ 3public override void StartUp() 4{ 5Console.WriteLine("Test HongQiCar start-up speed!"); 6} 7public override void Run() 8{ 9Console.WriteLine("The HongQiCar run is very quickly!"); 10} 11public override void Stop() 12{ 13Console.WriteLine("The slow stop time is3second"); 14} 15} BMWCar类: 1public class BMWCar:Car 2{

工厂方法模式(讲)

工厂方法模式(Factory Method)—对象创建型模式 工厂模式有以下几种形态: 简单工厂(Simple Factory)模式; 工厂方法(Factory Method)模式,又称多形性工厂(Polymorphic Factory)模式; 抽象工厂(Abstract Factory)模式,又称工具箱(Kit或Toolkit)模式 概述 在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这就是要说的Factory Method模式了。 意图 定义一个用户创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。 工厂方法模式解说 在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节。这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。在Factory Method模式中,工厂类与产品类往往具有平行的等级结构,它们之间一一对应。 现在我们考虑一个日志记录的例子(这里我们只是为了说明Factory Method模

记录的类,支持记录的方法有FileLog和EventLog两种方式。在这里我们先不谈设计模式,那么这个日志记录的类就很好实现了: 1///

2///日志记录类 3/// 4public class Log 5 { 6 7public void WriteEvent() 8 { 9 Console.WriteLine("EventLog Success!"); 10 } 11 12public void WriteFile() 13 { 14 Console.WriteLine("FileLog Success!"); 15 } 16 17public void Write(string LogType) 18 { 19switch(LogType.ToLower()) 20 { 21case "event":

工厂方法设计模式

实验三工厂方法设计模式 实验目的:加深对工厂方法设计模式及创建型设计模式原理的理解 实验环境:C#.Net 实验内容: 某系统日志记录器要求支持多种日志记录方式,如文件日志记录和到数据库日志记录等,且用户在应用场景下可以根据要求动态选择日志记录方式,现使用工厂方法设计模式设计该系统。 实验过程: 1、构建实现场景,画出UML类图 2、实现代码(C#) static void Main(string [] args) { Console .WriteLine("采用文件日志记录方式"); ILogFactory fileLogFactory = new FileLogFactory(); Log filelog = fileLogFactory .CreateLog();

filelog .write(); Console .WriteLine("=============================="); Console .WriteLine("采用数据库日志记录方式"); ILogFactory databaseLogFactory = new DatabaseLogFactory(); Log databaseLog = databaseLogFactory .CreateLog(); databaseLog .write(); } ///

///日志抽象类 /// public abstract class Log { public abstract void write(); } /// ///文件日志类 ///

java三种工厂模式

java三种工厂模式 适用场合: 1、工厂模式的适用场合 创建新对象最简单的办法是使用new关键字和具体类。只有在某些场合下,创建和维护对象工厂所带来的额外复杂性才是物有所值。本节概括了这些场合。 1.1 动态实现 如果需要像前面自行车的例子一样,创建一些用不同方式实现同一接口的对象,那么可以使用一个工厂方法或简单工厂对象来简化选择实现的过程。这种选择可以是明确进行的也可以是隐含的。前者如自行车那个例子,顾客可以选择需要的自行车型号;而下一节所讲的XHR工厂那个例子则属于后者,该例中所返回的连接对象的类型取决于所探查到的带宽和网络延时等因素。在这些场合下,你通常要与一系列实现了同一个接口、可以被同等对待的类打交道。这是JavaScript中使用工厂模式的最常见的原因。 1.2 节省设置开销

如果对象需要进行复杂并且彼此相关的设置,那么使用工厂模式可以减少每种对象所需的代码量。如果这种设置只需要为特定类型的所有实例执行一次即可,这种作用尤其突出。把这种设置代码放到类的构造函数中并不是一种高效的做法,这是因为即便设置工作已经完成,每次创建新实例的时候这些代码还是会执行,而且这样做会把设置代码分散到不同的类中。工厂方法非常适合于这种场合。它可以在实例化所有需要的对象之前先一次性地进行设置。无论有多少不同的类会被实例化,这种办法都可以让设置代码集中在一个地方。 如果所用的类要求加载外部库的话,这尤其有用。工厂方法可以对这些库进行检查并动态加载那些未找到的库。这些设置代码只存在于一个地方,因此以后改起来也方便得多。 1.3 用许多小型对象组成一个大对象 工厂方法可以用来创建封装了许多较小对象的对象。考虑一下自行车对象的构造函数。自行车包含着许多更小的子系统:车轮、车架、传动部件以及车闸等。如果你不想让某个子系统与较大的那个对象之间形成强耦合,而是想在运行时从许多子系统中进行挑选的话,那么工厂方法是一个理想的选择。使用这种技术,某天你可以为售出的所有自行车配上某种链条,要是第二天找到

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

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

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

java常用设计模式-工厂模式的实现

?工厂模式细分有三种,分别为:简单工厂模式、工厂方法模式和抽象工厂模式。 (现单个的讲,最后再讲这三个的区别) ?这篇文章主要通过一个农场的实例来讲解,这也是java与模式书中的例子,只不过我对一些部分进行了简化,一些部分进行了扩充,以帮助理解例子如下: 有一个农场公司,专门向市场销售各类水果有如下水果: 葡萄(grape) 草莓(strawberry) 苹果(apple) /*-------------------------------1、简单工厂模式-----------------------------------------------*/ 这个比较简单,写一下源代码源代码中给出了必须的注释代码比书上的要 简单一些,排版也好看一些,只是为了让新手更好的理解 Fruit.java: /** *水果与其它植物相比有一些专门的属性,以便与农场的 * 其它植物区分开这里的水果假设它必须具备的方法: * 生长grow()收获harvest()种植plant() */ public interface Fruit { void grow(); void harvest(); ?voidplant(); } /*****************************下面是Apple类的函数Apple.java:*******************/ /** *苹果是水果类的一种,因此它必须实现水果接口的所有方法即 *grow()harvest()plant()三个函数另外,由于苹果是多年生植物, *所以多出一个treeAge性质,描述苹果的树龄 */ public class Apple implements Fruit { privateint treeAge; publicvoid grow(){ //苹果的生长函数代码} ?public void harvest(){//苹果的收获函数代码} ?public void plant() { //苹果的种植函数代码}

工厂模式有以下几种形态

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

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

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

相关文档
最新文档