Java设计模式----------简单工厂类+工厂方法(FactoryMethod)

什么是简单工厂类呢?

简单工厂类的最大优点是在工厂逻辑中包含了必要的逻辑判断,根据客户端选择的条件动态创建对象。

看看下面这段代码,你应该有所顿悟:

Person.java里面写一个抽象方法。

public abstract void dowork();

 

Child.java

public class Child extends Person{
	public void dowork() {
		System.out.println("学生写作业");
	}


 

Old.java

public class Old extends Person{
public void dowork(){
	System.out.println("看着孩子写作业");
}


SimpleFactory.java 

public class SimpleFactory {
	public Person createPerson(String name) {
		if (name.equals("old")) {
			return new Old();
		} else {
			return new Child();
		}
	}
}

测试类:

public static void main(String[] args) {
		SimpleFactory simpleFactory = new SimpleFactory();
		Person p = simpleFactory.createPerson("old");
		p.dowork();
		Person P2 = simpleFactory.createPerson("child");
		P2.dowork();

	}


 

什么事工厂方法呢?

我觉得很多书说的太专业了,有时让我们有点难懂,我觉得工厂方法就是通过一个方法创建对象。当然,这之间还要注意很多的逻辑关系。首先,让我们看一下几个代码片段。

Work.java

public interface Work {
	void doWork();
}

StudentWork.java

public class StudentWork implements Work{

	@Override
	public void doWork() {
		// TODO Auto-generated method stub
		System.out.println("学生的工作");
	}

}

 

TeacherWork.java

public class TeacherWork implements Work{

	@Override
	public void doWork() {
		// TODO Auto-generated method stub
		System.out.println("老师做的工作");
	}

}


注意了,重点来了。首先看一下我们的接口:

IWorkFactory.java

public interface IWorkFactory {
   Work getWork();
}

 

StudentFactoryMethod.java

public class StudentFactoryMethod implements IWorkFactory{

	@Override
	public Work getWork() {
		// TODO Auto-generated method stub
		
		return new StudentWork();
	}

}


TeacherFactoryMethod.java

public class TeacherFactoryMethod implements IWorkFactory{

	@Override
	public Work getWork() {
		// TODO Auto-generated method stub
		
		return new TeacherWork();
	}

}

测试类:

	public static void main(String[] args) {
		IWorkFactory studentFactory = new StudentFactoryMethod();
		studentFactory.getWork().doWork();
		IWorkFactory teaFactory = new TeacherFactoryMethod();
		teaFactory.getWork().doWork();
	}


看了上面完整的设计方法,是不是有点明白,让我们用图来看的更清楚一些:

Java设计模式----------简单工厂类+工厂方法(FactoryMethod)_第1张图片

 

工厂模式主要适用于以下几个方面:

1.当一个类不知道它要创建那个类得对象时。

2.当一个类希望由它的子类来指定它所创建的对象的时候。

 

你可能感兴趣的:(设计模式)