您的位置:首页 > 编程语言 > Java开发

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

2013-08-07 13:41 876 查看
什么是简单工厂类呢?

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

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

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();
}


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



 

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

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

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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: