- 浏览: 612008 次
- 性别:
- 来自: 卡哇伊
文章分类
- 全部博客 (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中内容方法
意图
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类.
适用性
一个系统要独立于它的产品的创建、组合和表示时.
一个系统要由多个产品系列中的一个来配置时.
当你要强调一系列相关产品对象的设计以便进行联合使用时.
当你提供一个产品类库,而只想显示它们的接口而不是实现时.
抽象工厂模式的构成
抽象工厂角色(AbstractFactory):声明生成抽象产品的方法
具体工厂角色(ConcreteFactory):执行生成抽象产品的方法,生成一个具体产品.
抽象产品(AbstractProduct):为一种产品声明接口.
具体产品(ConcreteProduct):定义具体工厂生成的具体产品的对象,实现产品接口.
客户角色(Client):我们的应用程序,使用抽象产品和抽象工厂生成对象.
抽象方法模式和工厂方法模式最大的不同是:工厂方法模式的工厂角色每次只生成一个对象, 但是抽象工厂模式的工厂角色每次至少会生成两个对象或者是两个以上的对象.并且这些对象之间是有交互的,互相影响,互相依赖的关系.
ClassDiagram:
SequenceDiagram:
class Program { static void Main(string[] args) { AbstractFactory factory = new ConcreteFactory1(); Client c = new Client(factory); c.Run(); factory = new ConcreteFactory2(); c = new Client(factory); c.Run(); Console.ReadKey(); } } class Client { private AbstractProductA a; private AbstractProductB b; public Client(AbstractFactory factory) { a = factory.CreateProductA(); b = factory.CreateProductB(); } public void Run() { b.Interact(a); } } /// <summary> /// 抽象工厂角色(用来生成抽象产品的方法) /// </summary> abstract class AbstractFactory { //创建抽象产品A相应的具体产品 public abstract AbstractProductA CreateProductA(); //创建抽象产品B相应的具体产品 public abstract AbstractProductB CreateProductB(); } /// <summary> /// 具体的工厂1 /// </summary> class ConcreteFactory1 : AbstractFactory { public override AbstractProductA CreateProductA() { return new ProductA1(); } public override AbstractProductB CreateProductB() { return new ProductB1(); } } /// <summary> /// 具体工厂2 /// </summary> class ConcreteFactory2 : AbstractFactory { public override AbstractProductA CreateProductA() { return new ProductA2(); } public override AbstractProductB CreateProductB() { return new ProductB2(); } } /// <summary> /// 抽象产品A /// </summary> abstract class AbstractProductA { } /// <summary> /// 具体产品A1 /// </summary> class ProductA1 : AbstractProductA { } /// <summary> /// 具体产品A2 /// </summary> class ProductA2 : AbstractProductA { } /// <summary> /// 抽象产品B /// </summary> abstract class AbstractProductB { //定义了与AbstractProductA交互的方法. public abstract void Interact(AbstractProductA a); } /// <summary> /// 具体产品B1 /// </summary> class ProductB1 : AbstractProductB { public override void Interact(AbstractProductA a) { Console.WriteLine(this.GetType().Name + " Interact With " + a.GetType().Name); } } /// <summary> /// 具体产品B2 /// </summary> class ProductB2 : AbstractProductB { public override void Interact(AbstractProductA a) { Console.WriteLine(this.GetType().Name + " Interact With " + a.GetType().Name); } }
附件中有一个抽象工厂的示例:
可以下载参考,下面是该示例的引用关系:
发表评论
-
AbstractFactoryPattern(二)
2009-05-01 21:42 714关于抽象工厂(Abstract F ... -
VisitorPattern
2009-05-01 19:20 853意图表示一个作用于某 ... -
MementoPattern
2009-05-01 16:10 725意图在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之 ... -
MediatorPattern
2009-05-01 11:16 705意图用一个中介对象封装一系列的对象交互.中介者使各对象不需要显 ... -
Statepattern
2009-04-30 13:45 806意图允许一个对象在其 ... -
Chain of Responsibility Pattern
2009-04-28 23:23 863意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者之 ... -
InterpreterPattern
2009-04-28 14:43 862意图给定一个语言之后,解释器模式可以定义出其文法的一种表示,并 ... -
IteratorPattern
2009-04-26 18:15 819意图提供一种方法顺序 ... -
CommandPattern
2009-04-26 13:35 700意图:将一个请求封装为 ... -
StrategyPattern
2009-04-25 19:08 751策略模式(Strategy Pattern) 中体现了两个非常 ... -
TemplateMethodPattern
2009-04-25 13:24 837TemplateMethodPattern:定义一个操作中算法 ... -
PrototypePattern
2009-04-23 15:46 797意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的 ... -
追MM与23种设计模式
2009-04-21 15:13 6931、FACTORY—追MM少不了请 ... -
FactoryMethodPattern
2009-04-19 22:20 870工厂方法(FactoryMethod ... -
ObserverPattern
2009-03-27 17:40 807观察者模式又叫做发布- ... -
SimpleFactoryPattern
2009-03-26 00:57 795工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决 ... -
Builder Pattern
2009-03-21 18:47 1396建造者(Builder)模式 ... -
Singleton Pattern
2009-03-16 16:50 989单件模式:(Singleton pattern) 1.目的 1 ...
相关推荐
在`AbstractFactoryPattern-master`这个压缩包中,可能包含了示例代码,展示了如何在Java中实现抽象工厂模式。通常,你可以找到以下几个部分: - `AbstractFactory.java`:抽象工厂接口。 - `ConcreteFactory1.java`...
AbstractFactoryPattern抽象工厂指的是提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类如果多个类有相同的行为,但实际实现不同,则可能需要某种抽象类型作为其父类被继承,抽象类型定义了所有...
包含了九种经典的设计模式示例,它们分别是:单例模式(Singleton)、策略模式(StrategyPattern)、适配器模式(AdapterPattern)、装饰者模式(DecoratorPattern)、抽象工厂模式(AbstractFactoryPattern)、观察...
在C++编程中,我们可以看到`AbstractFactoryPattern.cpp`和`AbstractFactoryPattern.h`这两个文件,这通常表示实现了一个抽象工厂模式。抽象工厂模式是工厂方法模式的一个扩展,它提供一个创建一系列相关或相互依赖...
3. [抽象工厂](worthed/OriginBlog/blob/master/articles/AbstractFactoryPattern.md) 4. [建造者模式](worthed/OriginBlog/blob/master/articles/BuilderPattern.md) 5. [单例模式](worthed/OriginBlog/blob/master...
比如,`AbstractFactoryPattern.cpp`和`AbstractFactoryPattern.h`可能包含以下代码: ```cpp class AbstractFactory { public: virtual std::unique_ptr<ProductA> createProductA() = 0; virtual std::...
9. 抽象工厂模式(AbstractFactoryPattern): 当系统需要独立于产品创建和组合的变化时,应使用抽象工厂模式。它允许创建一系列相关或互相依赖的对象,而无需指定它们具体的类。 10. 单例模式(SingletonPattern...
在给定的"NO2abstractfactorypattern"压缩包中,可能包含了不同平台(例如Windows、Linux)下的文件操作类。抽象工厂可以是`FileOperationFactory`,它声明了创建文件和目录的操作方法,如`createFile()`和`create...
在提供的压缩包`AbstractFactoryPattern-master`中,可能包含了更多关于工厂模式的示例代码和深入解释,你可以进一步研究学习,以加深对工厂模式的理解,并将其应用到你的iOS项目中。通过熟练掌握工厂模式,你的代码...
6. 抽象工厂模式【AbstractFactoryPattern】:提供一个接口用于创建相关或依赖对象的家族,而不需要明确指定具体类。抽象工厂模式通过一个抽象的工厂类创建一系列相关或相互依赖的对象。 7. 门面模式【Facade...
在`AbstractFactoryPattern`文件中,可能存在一个抽象工厂类`AbstractFactory`,它定义了创建产品的方法,而具体的工厂类如`ConcreteFactory1`和`ConcreteFactory2`则分别实现这些方法,创建出不同类型的实例。...
在`AbstractFactoryPattern`文件中,可能包含一个`AbstractFactory`接口,它定义了一系列创建产品的方法,如创建窗口、按钮等。然后,有具体的工厂类如`PlatformFactoryA`和`PlatformFactoryB`实现这个接口,每个...
在压缩包中的`DesignPattern_AbstractFactoryPattern`文件中,应该包含了实现上述描述的完整代码示例,包括协议定义、工厂类的实现、以及如何在应用程序中使用这些工厂。通过阅读和理解这些代码,开发者可以深入掌握...
抽象工厂模式(AbstractFactoryPattern): 抽象工厂模式是创建型模式,它提供了一个接口用于创建一组相关或相互依赖的对象,而无需指定它们具体的类。抽象工厂模式适用于系统中有多个产品族,而系统只消费其中某一...
在提供的"abstractFactoryPattern"压缩包中,可能包含了以下内容: - `AbstractFactory.java`:抽象工厂接口的定义 - `ConcreteFactory1.java` 和 `ConcreteFactory2.java`:两个具体工厂类的实现,分别创建不同产品...
- **AbstractFactoryPattern类**:定义一个抽象工厂接口`GUIFactory`,包含创建窗口和控件的方法;接着创建实现`GUIFactory`的子类,如`WindowsGUIFactory`和`MacOSGUIFactory`,它们分别创建对应平台的窗口和控件。...
`AbstractFactoryPattern`包可能包含不同的工厂接口和实现,用于创建不同平台或环境下的对象。 4. **建造者模式(Builder)**:将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。`Builder...
"AbstractFactoryPattern"目录下的代码可能展示如何创建一系列相关对象,而无需关心它们的实现细节。 4. 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。"BuilderPattern...
4. 工厂模式(FACTORYMETHODPATTERN 和 ABSTRACTFACTORYPATTERN):工厂模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化推迟到子类中进行。 5. 门面模式(FACADEPATTERN)...