对于工厂设计模式,我对其的理解为作为一个统一调度的一个类,去实现其他类在实现同一个接口的情况下。下面来看代码:
//统一接口
package Factory;
public interface Sender {
public void Send();
}
//实现接口的方法
package Factory;
public class QqSend implements Sender{
@Override
public void Send() {
System.out.println("this is a qqinfo");
}
}
package Factory;
public class SendEmail implements Sender{
@Override
public void Send() {
System.out.println("this is sendEmail !");
}
}
//创建工厂类
package Factory;
public class Factory {
public Sender produce(String tips){
if("QQ".equals(tips)){
return new QqSend() ;
}
if("email".equals(tips)){
return new SendEmail() ;
}
System.out.println("输入错误");
return null;
}
}
//实现工厂类
package Factory;
public class Test {
public static void main(String[] args) {
Factory factory = new Factory() ;
Sender sender = factory.produce("QQ") ;
sender.Send();
}
}
这是一个简单的工厂类,能按照输入的字符串进行选择性实现接口,但是如果字符输入错误,那就没有办法执行,这个时候我们可以直接把gong工厂模式中的方法设置为静态方法。只需要:
package Factory;
public class Factory {
public static Sender email(){
return new SendEmail();
}
public static Sender QQ(){
return new QqSend() ;
}
}
实现
package Factory;
public class Test {
public static void main(String[] args) {
Factory factory = new Factory() ;
Sender sender = factory.email() ;
sender.Send();
}
}
这样就实现了基本的用法,一般情况下,选择静态工厂方法。