`

设计模式之-抽象工厂-AbstractFactory

阅读更多

概述:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

1.一个系统要独立于它的产品的创建、组合和表示时。
2.一个系统要由多个产品系列中的一个来配置时。
3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。
4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。

 

package pack.java.IAnimalFactory;

/***
 * 动物接口工厂;
 * @author Administrator
 *
 */
public interface IAnimalFactory {
	/**
	 * 产生猫接口;
	 * @return
	 */
	public ICat createCat();
	
	/**
	 * 产生狗接口;
	 * @return
	 */
	public IDog createDog();
	
}

 

 

package pack.java.IAnimalFactory;

public interface ICat {
	/**
	 * 猫具有吃的方法;
	 */
	public void eat();
}

 

 

package pack.java.IAnimalFactory;

public interface IDog {
	/**
	 * 狗具有吃的方法;
	 */
	public void eat();
}

 

 

package pack.java.AbstractFactory;

import pack.java.AnimalModel.BlackCat;
import pack.java.AnimalModel.BlackDog;
import pack.java.IAnimalFactory.IAnimalFactory;
import pack.java.IAnimalFactory.ICat;
import pack.java.IAnimalFactory.IDog;
/**
 * 黑颜色动物实现类;
 * @author Administrator
 *
 */
public class BlackAnimalFactory implements IAnimalFactory{
	/**
	 * 产生一只黑猫;
	 */
	public ICat createCat() {
		// TODO Auto-generated method stub
		return new BlackCat();
	}

	/**
	 * 产生一只狗;
	 */
	public IDog createDog() {
		// TODO Auto-generated method stub
		return new BlackDog();
	}

}

 

 

package pack.java.AbstractFactory;

import pack.java.AnimalModel.WhiteCat;
import pack.java.AnimalModel.WhiteDog;
import pack.java.IAnimalFactory.IAnimalFactory;
import pack.java.IAnimalFactory.ICat;
import pack.java.IAnimalFactory.IDog;

public class WhiteAnimalFactory implements IAnimalFactory{

	public ICat createCat() {
		// TODO Auto-generated method stub
		return new WhiteCat();
	}

	public IDog createDog() {
		// TODO Auto-generated method stub
		return new WhiteDog();
	}
	
}

 

 

package pack.java.AnimalModel;

import pack.java.IAnimalFactory.ICat;

public class BlackCat implements ICat{

	/***
	 * 黑猫具有吃的方法;
	 */
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一只黑猫,正在捕捉老鼠!");
	}

}

 

 

package pack.java.AnimalModel;

import pack.java.IAnimalFactory.IDog;

public class BlackDog implements IDog{

	/**
	 * 黑狗具有吃的方法;
	 */
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一条黑狗,正在啃骨头!");
	}

}

 

 

package pack.java.AnimalModel;

import pack.java.IAnimalFactory.ICat;

public class WhiteCat implements ICat{

	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一只白猫,正在吃鱼!");
	}

}

 

 

package pack.java.AnimalModel;

import pack.java.IAnimalFactory.IDog;

public class WhiteDog implements IDog{

	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("一条白狗,正在吃东西!");
	}

}

 

 

package pack.java.testdemo;

import pack.java.AbstractFactory.BlackAnimalFactory;
import pack.java.AbstractFactory.WhiteAnimalFactory;
import pack.java.IAnimalFactory.IAnimalFactory;
import pack.java.IAnimalFactory.ICat;
import pack.java.IAnimalFactory.IDog;

/**
 * 测试抽象工厂;
 * @author Administrator
 *
 */
public class TestAbstractFactory {

	/**
	 * 主方法;
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//实例化一个黑色动物工厂类,
		IAnimalFactory animalFactory = new  BlackAnimalFactory();
		
		//产生一只黑猫;
		ICat blackCat = animalFactory.createCat();
		
		//黑猫吃东西;
		blackCat.eat();
		
		//产生一只黑狗;
		IDog blackDog = animalFactory.createDog();
		
		//黑狗吃东西;
		blackDog.eat();
		
		System.out.println("");
		
		//实例化一个白色动物工厂;
		IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory();
		
		//产生一只白猫;
		ICat whiteCat = whiteAnimalFactory.createCat();
		
		//白猫吃东西的方法;
		whiteCat.eat();
		
		//产生一只白狗;
		IDog whiteDog = whiteAnimalFactory.createDog();
		
		//白狗吃东西的方法;
		whiteDog.eat();
		
	}
}

 

 

运行结果:

 

一只黑猫,正在捕捉老鼠!
一条黑狗,正在啃骨头!

一只白猫,正在吃鱼!
一条白狗,正在吃东西!

分享到:
评论

相关推荐

    设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)

    设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)

    创建型-抽象工厂模式(Abstract Factory)

    此外,抽象工厂模式还可以与其他设计模式结合使用,比如工厂方法模式(Factory Method Pattern),在某些情况下,可以将抽象工厂模式的抽象工厂类设计为工厂方法模式,让子类决定实例化哪一个类。同时,抽象工厂模式...

    设计模式--抽象工厂

    "抽象工厂"是设计模式中的一种,属于创建型模式,它提供了一种创建对象族的接口,而无需指定它们的具体类。这个模式的核心在于隔离了产品对象的创建过程,使得系统对具体产品的依赖最小化,从而增强了系统的灵活性和...

    设计模式 - 抽象工厂模式

    设计模式 - 抽象工厂模式 抽象工厂模式是一种创建型设计模式,它提供了一种方式来创建一组相关或相互依赖的对象,而不需要指定具体的类。该模式允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际...

    设计模式--抽象工厂之小解

    **设计模式——抽象工厂之小解** 在软件工程中,设计模式是一种被广泛采用的解决常见问题的经验总结,它们是经过验证的、可重用的解决方案。抽象工厂(Abstract Factory)设计模式是其中的一种创建型模式,它提供了...

    设计模式-抽象工厂模式(讲解及其实现代码)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、组合和表示产品对象的细节进行设计,为产品族(一组相关或相互依赖的对象)提供...

    创建型设计模式----抽象工厂模式

    抽象工厂模式是创建型设计模式的一种,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定具体类。这种模式的核心在于它允许客户端代码与具体实现细节解耦,使得更换一个产品族变得更为容易。...

    设计模式举例-抽象工厂模式(有图有真相)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体类。这种模式的关键在于,它允许客户端代码在不关心具体实现的情况下,能够创建一系列相关的对象,同时保持了良好的封装...

    设计模式----抽象工厂模式

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定具体的类。这种模式允许客户端使用一个通用接口来创建一组相关或相互依赖的对象,而无需了解它们的具体实现。在Java或其他面向...

    java常用设计模式-抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来创建对象,但将具体实现的决定留给子类来决定。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式...

    走进设计模式之抽象工厂(Abstract Factory)

    总之,"走进设计模式之抽象工厂"这篇博客深入探讨了抽象工厂模式的原理、实现方式、应用场景及其优缺点,旨在帮助读者理解并有效地运用这一设计模式。通过阅读博客和分析提供的代码示例,开发者可以更好地掌握抽象...

    设计模式-抽象工厂模式

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象族的接口,而无需指定其具体的类。这种模式的关键在于“族”,即一系列相关的对象。在抽象工厂模式中,我们创建一个抽象工厂接口,然后为每一种具体...

    java设计模式-抽象工厂模式

    抽象工厂模式是设计模式中的一种,它属于创建型模式,主要解决的是当系统有多个产品族,而每个产品族又有多个具体产品时,如何组织代码的问题。在Java中,抽象工厂模式提供了一种创建对象组的方式,使得这些对象属于...

    设计模式-抽象工厂模式javademo

    抽象工厂模式是软件设计模式中的一种创建型模式,它提供了一种创建对象族(一组具有相互依赖关系的对象)的方法,而无需指定它们的具体类。在Java编程中,抽象工厂模式通常用于实现跨平台或者跨框架的接口,使得系统...

    Java设计模式教程 - Java设计模式 - 抽象工厂模式

    抽象工厂模式是Java设计模式中的一种创建型模式,它提供了创建对象族的接口,而具体的对象族由子类决定。这种模式的主要目的是隔离接口与实现,使得客户端代码在更换产品族时无需修改,增强了软件的可扩展性和可维护...

    从哲学角度学习设计模式-抽象工厂

    在众多设计模式中,“抽象工厂”(Abstract Factory)模式是一种创建型模式,它提供了一个接口,用于创建相关或依赖对象的家族,而不必指定它们的具体类。这一模式深受哲学的影响,特别是“形而上学”的概念,探讨了...

    c++设计模式-抽象工厂方法

    **抽象工厂方法(Abstract Factory Pattern)**是一种创建型设计模式,它提供了一种创建对象族的接口,而具体的对象族由子类决定。在C++中,这种模式可以帮助我们隔离对象的创建和使用,使得代码更加灵活,易于扩展...

    Java设计模式-抽象工厂

    **Java设计模式——抽象工厂** 在软件工程中,设计模式是一种在特定场景下解决常见问题的模板或蓝图。抽象工厂模式是设计模式中的一种结构型模式,它提供了一个创建对象族的接口,但允许子类决定实例化哪一个类。这...

    iOS设计模式-抽象工厂

    本篇主要探讨的是“抽象工厂”设计模式,这是一种创建型设计模式,它提供一个接口用于创建相关或依赖对象的家族,而无需指定具体类。 抽象工厂模式的核心概念是“工厂”,它不直接生产产品,而是提供一个创建产品的...

Global site tag (gtag.js) - Google Analytics