什么是工厂模式?作用是什么?
工厂模式属于创建型模式,它提供了一种创建对象的最佳方式。在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。在任何需要生成复杂对象的地方,都可以使用工厂方法模式。如Spring。
作用:
工厂模式把对象的创建和使用的过程分开。如Class A 想调用 Class B ,那么A只是调用B的方法,而至于B的实例化,就交给工厂类。降低了ClassA与ClassB的耦合度。起到了解耦的作用。
工厂模式还可以降低代码重复。如果创建对象的过程都很复杂,且要用到的地方很多,那么就会产生很多的重复代码。因此可以这些创建对象的过程交给工厂里统一管理。既减少了重复代码,也便与管理对象和维护。
(一)、简单工厂模式
1、定义接口IClass
public interface IClass {
public void create();
}
2.Class1实现接口IClass 并复写方法
public class Class1 implements IClass {
@Override
public void create() {
System.out.println("calss1对象创建成功!");
}
}
3、Class2实现接口IClass 并复写方法
public class Class2 implements IClass {
@Override
public void create() {
System.out.println("calss2对象创建成功!");
}
}
4、工厂类
public class Factory {
//这是简单工厂模式,IClass为Class1和Class2的接口
public IClass produce(String type){
if("class1".equals(type)){
return new Class1();
}else if("class2".equals(type)){
return new Class2();
}else{
System.out.println("请输入正确的类型!");
return null;
}
}
//多个方法
/*public IClass Class1(){
return new Class1();
}
public IClass Class2(){
return new Class2();
}*/
}
5、测试类
public static void main(String[] args) {
Factory factory = new Factory();
IClass iclass = factory.produce("class1");
iclass.create();
}
二、工厂方法模式
简单工厂有一个问题,类的创建依赖工厂类,也就是说要扩展程序,
必须对工厂类进行修改,如果工厂出了问题,其他的类创建也会受到影响。这违背了闭包原则。
1、1,2,3步骤同上。
4、工厂接口IFactory 。
public interface IFactory {
public IClass produce();
}
5、Class1Factory实现IFactory 并复写创建对象的方法。
public class Class1Factory implements IFactory {
@Override
public IClass produce() {
return new Class1();
}
}
6、Class2Factory同上。
7、测试类
public class FactoryTest {
public static void main(String[] args) {
IFactory pro = new Class1Factory();
IClass sender = pro.produce();
sender.create();
}
}
三、抽象工厂模式