1、普通工厂模式:创建一个工厂类,对实现同一接口的不同类,根据不同的类别实例化不同的对象。
接口类:
public interface Sender {
public void Send();
}
public Class printSend1 implements Sender{
public void Send(){
system.out.println("这是工厂第一个物品A");
}
}
public Class printSend2 implements Sender{
public void Send(){
system.out.println("这是工厂第一个物品B");
}
}
工厂类:
public Class Factory{
public void factoryTest(String factoryType){
swicth(factoryType){
case "1": return new printSend1();breack;
case "2": return new printSend2();breack;
default:println("输入类型错误,请重新输入");
}
}
}
测试类:
public static void main(String[] args){
Factory factory=new Factory();
Sender sender=factory.factoryTest("factoryType");
sender.send();
}
总结:通过factory工厂类获取Sender类子类的实例化。缺点如果再加入一种想要生产的物品,还是需要修改工厂类。
工厂类改进类:
public Class Factory1 implements FactoryClass{
public void factoryTest(String factoryType){
return new printSend1();
}
}
public Class Factory2 implements FactoryClass{
public void factoryTest(String factoryType){
return new printSend2();
}
}
另加一个借口类:
public interface FactoryClass{
public Sender factoryTest();
}
主方法:
public class Test{
public static void main(String[] args){
FactoryClass factoryClass=new Factory2();
Sender sender=factoryClass.factoryTest();
sender.send();
}
}
总结:通过接口的实现,为每一个工厂添加共同的方法。但每个工厂中的实例化对象不同。这样的工厂类,就不存在添加新的物品改写工厂类,只需添加新的工厂类就好了。