- 浏览: 601050 次
- 性别:
- 来自: 卡哇伊
文章分类
- 全部博客 (299)
- C# (25)
- Java (1)
- WinForm (0)
- Asp.Net (86)
- Jsp (2)
- Php (1)
- Web Service (0)
- Desgin Patterns (19)
- Data Structure & Algorithms (1)
- SQLserver (41)
- Mysql (0)
- Oracle (2)
- Javascript (50)
- Ajax (10)
- Jquery (1)
- Flex (0)
- Regular Expression (5)
- DIV+CSS+XHTML+XML (18)
- Software Test (0)
- Linux (0)
- Utility (17)
- Net Digest (4)
- windows 2003 (10)
- Other (4)
- English (1)
- IT Term (1)
最新评论
-
w497480098h:
学习了 很好谢谢
SQL Server下无限多级别分类查询解决办法(简单查询树形结构数据库表) -
main_fun:
确实不错
iframe自适应高度 -
jveqi:
...
DBA -
mxcie:
其它版本没有确认,今天使用vs2003时,其.sln文件也需要 ...
彻底删除项目的VSS源代码管理信息 -
moneyprosper:
就只有IE支持,火狐和谷歌都不支持此种方法。正在寻找中。。。
从父页面读取和操作iframe中内容方法
工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。工厂方法模式又称为多态工厂模式. 在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节。这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。 在Factory Method模式中,工厂类与产品类往往具有平行的等级结构,它们之间一一对应。
意图:
定义一个用于创建对象的接口,让子类决定实例化哪一个类 。
Factory Method 使一个类的实例化延迟到其子类.
适用性:
1) 当一个类不知道它所必须创建对象的类的时候
2) 当一个类希望由它的子类来制定它所创建对象的时候
3) 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望
将哪一个帮助子类是代理者这一信息局部化的时候
比如:一个类可以创建一个对象,但是具体创建这个类的职责是由这个类的
子类来完成的,但是一个类的子类可能有多个,你希望是哪个子类去创建这个
对象呢?,也就是信息局部化,所谓局部化就是由特定的子类来创建想要创建的那个
对象,假设A这个子类创建B这个对象,B这个子类来创建C这个对象,说的就是局
部化的意思.
工厂方法模式的构成
产品角色(Prodict):定义产品的接口,工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。
具体产品角色(ConcreteProduct):实现接口Product的接口,这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。
工厂角色(Creator):声明工厂方法(FactoryMethod),返回一个产品,是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
具体工厂角色(ConcreteCreator):实现FactoryMethod方法,由客户调用,返回一个产品的实例,这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。
举例:
比如有一个兵工厂,兵工厂有各种武器,可以创建坦克,可以创建大炮,冲锋枪等等.但是不可能一个工厂它可以创建所有的武器(这就是简单工厂的缺陷),那么由创建坦克的工厂去完成坦克的创建,由冲锋抢的工厂完成冲锋枪的创建,创建冲锋枪和创建坦克的工厂都是具体工厂的角色,它们都是兵工厂(工厂角色),创建出来的冲锋枪和坦克是具体产品角色,它们都是兵器(产品角色).
同理现在有两个手机工厂分别是诺基亚和三星,诺基亚工厂创建诺基亚手机,三星工厂创建三星手机,相反就不行.这样就总结出两个工厂和两个具体产品,而不同的产品是由不同的工厂制造出来的. 就像前面说的坦克这个产品是由制造坦克的工厂制造出来的,飞机这个产品是由制造飞机的这个工厂制造出来的,它们之间不会乱,每个具体工厂它都会创建它所应该创建的那个具体产品对象,一个具体的工厂对应一个具体产品对象
工厂方法模式与简单工厂模式:
工厂方法模式与简单工厂模式再结构上的不同不是很明显。工厂方法类的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。
工厂方法模式之所以有一个别名叫多态性工厂模式是因为具体工厂类都有共同的接口,或者有共同的抽象父类。
当系统扩展需要添加新的产品对象时,仅仅需要添加一个具体对象以及一个具体工厂对象,原有工厂对象不需要进行任何修改,也不需要修改客户端,很好的符合了"开放-封闭"原则。而简单工厂模式在添加新产品对象后不得不修改工厂方法,扩展性不好。
工厂方法模式退化后可以演变成简单工厂模式。
Class Diagram:
SequenceDiagram:
class Clinet
{
static void Main(string[] args)
{
MobileFactory factory;
Mobile mobile;
factory = new NoKiaFactory();
mobile = factory.ProduceMobile();
mobile.Call();
factory = new MotorolaFactory();
mobile = factory.ProduceMobile();
mobile.Call();
Console.ReadKey();
}
}
/// <summary>
/// 产品角色(手机)
/// </summary>
public interface Mobile
{
void Call();
}
/// <summary>
/// 工厂角色(创建手机)
/// </summary>
interface MobileFactory
{
Mobile ProduceMobile();
}
/// <summary>
/// 具体的产品(Motorola)
/// </summary>
public class Motorola : Mobile
{
public void Call()
{
Console.WriteLine("摩托罗拉手机!");
}
}
/// <summary>
/// 具体的产品(Nokia)
/// </summary>
public class Nokia : Mobile
{
public void Call()
{
Console.WriteLine("诺基亚手机!");
}
}
/// <summary>
/// 具体的工厂角色,创建诺基亚手机
/// </summary>
public class NoKiaFactory : MobileFactory
{
#region MobileFactory 成员
public Mobile ProduceMobile()
{
Console.Write("诺基亚工厂制造了:");
return new Nokia();
}
#endregion
}
/// <summary>
/// 具体的工厂角色,创建摩托罗拉手机
/// </summary>
public class MotorolaFactory : MobileFactory
{
#region MobileFactory 成员
public Mobile ProduceMobile()
{
Console.Write("摩托罗拉工厂制造了:");
return new Motorola();
}
#endregion
}
发表评论
-
AbstractFactoryPattern(二)
2009-05-01 21:42 674关于抽象工厂(Abstract F ... -
VisitorPattern
2009-05-01 19:20 802意图表示一个作用于某 ... -
MementoPattern
2009-05-01 16:10 686意图在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之 ... -
MediatorPattern
2009-05-01 11:16 685意图用一个中介对象封装一系列的对象交互.中介者使各对象不需要显 ... -
Statepattern
2009-04-30 13:45 763意图允许一个对象在其 ... -
Chain of Responsibility Pattern
2009-04-28 23:23 828意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者之 ... -
InterpreterPattern
2009-04-28 14:43 826意图给定一个语言之后,解释器模式可以定义出其文法的一种表示,并 ... -
IteratorPattern
2009-04-26 18:15 786意图提供一种方法顺序 ... -
CommandPattern
2009-04-26 13:35 667意图:将一个请求封装为 ... -
StrategyPattern
2009-04-25 19:08 712策略模式(Strategy Pattern) 中体现了两个非常 ... -
TemplateMethodPattern
2009-04-25 13:24 803TemplateMethodPattern:定义一个操作中算法 ... -
PrototypePattern
2009-04-23 15:46 766意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的 ... -
追MM与23种设计模式
2009-04-21 15:13 6641、FACTORY—追MM少不了请 ... -
AbstractFactoryPattern
2009-04-21 13:23 713意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定 ... -
ObserverPattern
2009-03-27 17:40 767观察者模式又叫做发布- ... -
SimpleFactoryPattern
2009-03-26 00:57 768工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决 ... -
Builder Pattern
2009-03-21 18:47 1375建造者(Builder)模式 ... -
Singleton Pattern
2009-03-16 16:50 956单件模式:(Singleton pattern) 1.目的 1 ...
相关推荐
NULL 博文链接:https://lym6520.iteye.com/blog/698013
FactoryMethodPattern.zip
2、工厂方法模式(Factory Method Pattern) 用意:让每个具体工厂生产具体产品
The following class diagram represents a design in factory method pattern to query the features of different types of auto insurances. See the source code for the implementation of the following class...
它们都是由不同的厂家生产的,这就是工厂方法模式(FactoryMethod)与前面所说的简单工厂模式(SimpleFactory)的差别。 实例: 多文档系统。我已经用C#的源码编程了:请下载Factory Method Patter.rar
NULL 博文链接:https://rich8w.iteye.com/blog/464344
5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER ...
一些面向对象的小练习题
工厂方法模式(Factory Method Pattern) 观察者模式(Observer Pattern) 建造者模式(Builder Pattern) 解释器模式(Interpreter Pattern) 命令模式(Command Pattern) 模板方法模式(Template Method Pattern) 桥接模式...
工厂方法模式[FACTORY METHOD PATTERN] 抽象工厂模式[ABSTRACT FACTORY PATTERN] 门面模式[FACADE PATTERN] 适配器模式[ADAPTER PATTERN] 模板方法模式[TEMPLATE METHOD PATTERN] 建造者模式[BUILDER PATTERN] 策略...
工厂方法模式(Factory Method Pattern) 抽象工厂模式(Abstract Factory Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 单例模式(Singleton Pattern) 结构型模式用来...
本资料来源于吕震宇博客...C#设计模式(5)-Factory Method Pattern C#设计模式(4)-Simple Factory Pattern C#设计模式(3) - 设计原则(2) C#设计模式(2) - 设计原则(1) C#设计模式(1) - 面向对象基本概念复习
ios平台下迭代器模式最初简代码讲解何为迭代器模式,相关博客http://blog.sina.com.cn/s/blog_161d504630102wxis.html
语音信号处理homework1.homework1.
Design Patterns Explained - ...• Chapter 23: The Factory Method Pattern • Chapter 24: Summary of Factories (no review questions) • Chapter 25: Design Patterns Reviewed: A Summation and a Beginning
2. **工厂方法模式(Factory Method Pattern)**: 工厂方法用于创建依赖对象,而不必将对象的创建逻辑暴露给客户端。在iOS中,这可以用于创建视图控制器或其他复杂的对象,这些对象可能有多个变体。 ```swift ...
The Factory Method Pattern Chapter 10. The Abstract Factory Pattern Chapter 11. The Builder Pattern Part 3 - The Structural Patterns Chapter 12. The Adapter Pattern Chapter 13. The Bridge Pattern ...
Factory Method Pattern 工厂三兄弟之工厂方法模式(一) 工厂三兄弟之工厂方法模式(二) 工厂三兄弟之工厂方法模式(三) 工厂三兄弟之工厂方法模式(四) 抽象工厂模式-Abstract Factory Pattern 工厂三兄弟之...
C#设计模式(5)-Factory Method Pattern 一、 工厂方法(Factory Method)模式 二、 Factory Method模式角色与结构: 三、 程序举例: 四、 工厂方法模式与简单工厂模式 五、 Factory Method模式演化 六、 ...