简单工厂的构成分为三部分:
1、抽象工厂
2、具体工厂
3、实体类
举例:
用工厂模式实现三种发送信息的方式:邮件、短信、微信;
首先建立一个抽象工厂:
public interface Sender{
void send();
}
第二步:建立三个具体类
public class EmailSender implments Sender{
public void send(){
System.out.print("send a email");
}
}
public class NoteSender implements Sender{
public void send(){ System.out.print("send a note");}
}
public class WeixinSender implements Sender{
public void send(){
System.out.print("send a msg");
}
}
第三步:建立一个具体工厂
public class SendFactory {
public static final int MAIL = 1;
public static final int SMS = 2;
public static final int InternalMail = 3;
public Sender createSender(int sendType){
if(sendType == MAIL)
return new EmailSender();
else if(sendType == SMS)
return new NoteSender();
else if(sendType == InternalMail)
return new WeixinSender();
else
return null;
}
}
到此简单工厂的小程序就建立好啦,下面进行测试
测试程序:
public class Main {
public static void main(String[] args) {
SendFactory send = new SendFactory();
Sender sender = send.createSender(1);
sender.send();
System.out.println("========================");
Sender sender1 = send.createSender(2);
sender1.send();
System.out.println("========================");
Sender sender2 = send.createSender(3);
sender2.send();
System.out.println("========================");
}
}
总结:对于简单工厂这种设计模式,相对于直接new一个对象而言是增加一个新的类,然后在具体工厂中增加一个新的选择,总而来说就是通过if/else或者switch来实现的,扩展性相对有一定的提高,对象实例化的细节不会向客户代码透漏,而是通过接口创建对象。