黑马程序员——设计模式——工厂方法模式

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

应用场景:对于调用者清楚知道应该用哪个工厂

创建步骤

1.创建抽象产品角色(抽象类或接口,所有产品公有的部分)

2.创建具体产品角色(抽象类的实现类或接口的实现方式,实现具体方法)

3.创建抽象工厂角色(接口,与程序无关,所有具体工厂必须实现该接口)

4.创建具体工厂角色(实现接口,返回具体的产品对象)


1.创建抽象产品

//抽象产品角色
//所有具体产品的父类定义的产品的公有方法
abstract class Animal{
	abstract void eat();
}


2.创建具体产品

//具体产品角色
//产品的具体实现
class Dog extends Animal{

	void eat() {
		System.out.println("狗吃骨头");
	}
}
//具体产品角色
//产品的具体实现
class Cat extends Animal{

	void eat() {
		System.out.println("猫吃鱼");
	}
}


3.创建抽象工厂

//抽象工厂类
//工厂类的核心,与应用程序无关必须实现该接口
interface FactoryMethod{
	public abstract Animal createAnimal();
}


4.创建具体工厂

//具体工厂类
//实现抽象工厂类,专门创建具体对象
class DogFactory implements FactoryMethod{

	public Animal createAnimal() {
		return new Dog();
	}
}

class CatFactory implements FactoryMethod{


	public Animal createAnimal() {
		return new Cat();
	}
	
}


测试类
public class Main {

	public static void main(String[] args) {
		FactoryMethod fac = new DogFactory();
		Animal a = fac.createAnimal();//直接Dog d = fac.createAnimal()也可以
		a.eat();
		fac = new CatFactory();
		a = fac.createAnimal();
		a.eat();
		
	}

}

输出

狗吃骨头
猫吃鱼


你可能感兴趣的:(工厂模式)