简单工厂模式用于根据不同的参数创建不同的对象,比如人类工厂有个创建人类的方法,根据不同的参数,如果是boy则创建男孩对象,如果是girl则创建女孩对象。
设计模型:
示例代码:
interface Human {
public void Talk();
public void Walk();
}
class Boy implements Human{
@Override
public void Talk() {
System.out.println("Boy is talking...");
}
@Override
public void Walk() {
System.out.println("Boy is walking...");
}
}
class Girl implements Human{
@Override
public void Talk() {
System.out.println("Girl is talking...");
}
@Override
public void Walk() {
System.out.println("Girl is walking...");
}
}
public class HumanFactory {
public static Human createHuman(String m){
Human p = null;
if(m == "boy"){
p = new Boy();
}else if(m == "girl"){
p = new Girl();
}
return p;
}
public static void main(String[] args) {
HumanFactory.createHuman("boy").Talk();
}
}
Java标准库中的 工厂模式随处可见,几乎所有的名为getInstance的方法都使用了工厂模式,如:
java.util.Calendar - getInstance()
java.util.Calendar - getInstance(TimeZone zone)
java.util.Calendar - getInstance(Locale aLocale)
java.util.Calendar - getInstance(TimeZone zone, Locale aLocale)
java.text.NumberFormat - getInstance()
java.text.NumberFormat - getInstance(Locale inLocale)