提供一个创建一系列相关或相互依赖的对象的接口,而不需指定它们具体的类。
通常在run-time式创建一个ConcreateFactory类的单体实例。这个ConcreteFactory创建ConcreteProduct对象。为了创建不同的ConcreteProduct对象,clients需要使用不同的ConcreteFactory。
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"></shapetype><stroke joinstyle="miter"></stroke><formulas></formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f><lock aspectratio="t" v:ext="edit"></lock><shape id="_x0000_i1025" style="WIDTH: 431.25pt; HEIGHT: 228pt" type="#_x0000_t75"></shape><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png"></imagedata>
AbstractFactory(ContinentFactory)
定义一个接口,用来创建抽象products。
ConcreteFactory(AfrciaFactory,AmericaFactory)
实现创建具体的Products。
AbstractProduct(Herbivore,Carnivore)
声明一个接口表示一种product类型
Product(Wildebeest,Lion,Bison,Wolf)
定义被相关Concrete factory创建的product对象
实现AbstractProduct接口
Client(AnimalWorld)
使用AbstractFactory和AbstractProduct类
代码:
//AbstractFactory
public interface ContinentFactory{
public Herbivore CreateHerbivore();
public Carnivore CreateCarnivore();
}
//ConcreteFactory
public class AfricaFactory implements ContinentFactory{
public Herbivore CreateHerbivore(){
return new Wildebeest();
}
public Carnivore CreateCarnivore(){
return new Lion();
}
}
public class AmericaFactory implements ContinentFactory{
public Herbivore CreateHerbivore(){
return new Bison();
}
public Carnivore CreateCarnivore(){
return new Wolf();
}
}
//AbstractProduct
public interface Herbivore{
}
public interface Carnivore{
public void Eat(Herbivore h);
}
//Product
public class Wildebeest implements Herbivore{
}
public class Lion implements Carnivore{
public void Eat(Herbivore h){
System.out.println(“Lion eats “ +h.getName());
}
}
public class Bison implements Herbivore{
}
public class Wolf implements Carnivore{
public void Eat(Herbivore h){
System.out.println(“Wolf eats “ +h.getName());
}
}
//Client
public class AnimalWorld{
private Herbivore herbivore;
private Carnivore carnivore;
public AnimalWorld(ContinentFactory factory){
carnivore=factory. CreateCarnivore();
herbivore=factory. CreateHerbivore();
}
//Mehtods
public void RunFoodChain(){
carnivore.Eat(herbivore);
}
public static void main(String[] args){
AnimalWorld world=new AnimalWorld(new AfricaFactory());
world.RunFoodChain();
world=new AnimalWorld(new AmericaFactory());
world.RunFoodChain();
}
Output
Lion eats Wildebeest
Wolf eats Bison
|
分享到:
相关推荐
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种创建对象集合的接口,而无需指定具体的产品类型。这种模式适用于当系统需要在不同平台或环境中创建一组相关或相互依赖的对象时,而这些...
1. **模式结构**:抽象工厂模式通常包括抽象工厂接口(AbstractFactory),具体工厂类(ConcreteFactory),抽象产品接口(Product)以及具体产品类(ConcreteProduct)。抽象工厂定义了创建产品的方法,而具体工厂...
1. 抽象工厂(Abstract Factory):这是模式的核心,它是一个接口或抽象类,定义了一系列创建对象的方法,但并不直接实例化具体的对象。这些方法用于创建一系列相关或相互依赖的对象。 2. 具体工厂(Concrete ...
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建一系列相关或相互依赖对象的接口。这个模式使得客户端代码与具体产品的实现解耦,从而提高了系统的灵活性和...
1. 抽象工厂(Abstract Factory):这是模式的核心,定义了一组创建对象的接口,客户端通过这个接口请求创建所需的产品。这个接口不直接创建产品,而是将产品创建的职责委托给具体工厂。 2. 具体工厂(Concrete ...
### 抽象工厂模式(Abstract Factory Pattern) #### 引入 在探讨抽象工厂模式之前,我们先回顾一下之前介绍过的简单工厂模式与工厂方法模式。这两种模式主要关注于解决对象创建过程中“new”操作的问题,使得创建...
抽象工厂(Abstract Factory)设计模式是软件工程中一种重要的创建型设计模式,它提供了一种创建对象组的方式,这些对象属于同一族系并且彼此相关。这个模式的主要目标是定义一个接口,用于创建一族相关或相互依赖的...
抽象工厂(Abstract Factory)模式是一种创建型设计模式,它提供了一种创建对象的接口,但允许子类决定实例化哪一个类。这种模式是基于对象的抽象,而不是具体的类,因此,它允许创建一系列相关的对象,而无需指定...
设计模式抽象工厂模式(AbstractFactory)源代码
在这个例子中,`AbstractProductA`和`AbstractProductB`是抽象产品,`ConcreteProductA1/A2`和`ConcreteProductB1/B2`是具体产品,`AbstractFactory`是抽象工厂,`ConcreteFactory1/2`是具体工厂。客户端代码通过...
1. **抽象工厂接口(Abstract Factory)**:定义了一系列产品的创建方法,例如`NWFactory`可能是这个抽象工厂的实现,它包含了创建人和动物的方法。 2. **具体工厂类(Concrete Factory)**:实现了抽象工厂接口,...
这个压缩包“C# 抽象工厂 AbstractFactory.rar”可能包含了一个关于如何在C#中实现抽象工厂模式的实例或教程。 抽象工厂模式是一种创建型设计模式,它提供了一种创建对象族的方式,而无需指定具体类。在C#中,这种...
### C#设计模式之抽象工厂(Abstract Factory)模式详解 #### 概述 抽象工厂模式(Abstract Factory Pattern)是创建型设计模式的一种,它提供了一个接口用于创建一系列相关的或相互依赖的对象,而无需指定它们具体的...
在C#中实现抽象工厂模式(Abstract Factory Pattern)涉及定义一个抽象工厂接口,该接口声明用于创建抽象产品的方法。然后,为每个具体产品族实现一个具体工厂,这些工厂提供创建具体产品的实现。最后,客户端代码...
在给定的压缩包文件中,"AbstractFactory"可能包含了一些示例代码或者实现,用来解释抽象工厂模式的具体应用。这些代码可能包括抽象工厂接口、具体工厂类以及抽象产品和具体产品的定义。通过查看这些代码,我们可以...
1. **抽象工厂接口(Abstract Factory)**:定义了创建一组相关或相互依赖对象的接口,而不指定它们的具体类。在这个例子中,可以有一个`MarketFactory`接口,它声明了创建水果和蔬菜的方法,如`createFruit()`和`...
1. 抽象工厂(Abstract Factory):定义一个创建对象的接口,但不指定具体的产品实现,而是由具体的工厂类来实现。 2. 具体工厂(Concrete Factory):实现了抽象工厂接口,负责创建具体的产品对象。 3. 抽象产品...
**抽象工厂模式(Abstract Factory Pattern)**是一种创建型设计模式,它提供了一种创建对象族的接口,而无需指定它们的具体类。这种模式是当一个系统需要根据不同的平台或者环境来创建一组相关或相互依赖的对象时,...
抽象工厂(Abstract Factory)模式是设计模式中的一种创建型模式,它提供了一种...在阅读提供的博客文章《AbstractFactory 抽象工厂》和研究压缩包中的相关文件时,你可以深入学习到更多关于这个模式的实践和应用场景。
Abstract_Factory抽象工厂Abstract_Factory抽象工厂Abstract_Factory抽象工厂Abstract_Factory抽象工厂