工厂模式

简介: 工厂模式

1.通过接口实例化类

Map hashMap=new HashMap();
Map treeMap=new TreeMap();
如果接口的类越来越多?

2.简单工厂

public class Factory {
    public static Map creator(int which) {
        if (which == 1) {
            return new HashMap();
        } else if (which == 2) {
            new TreeMap();
        }
        return null;
    }
}
Map hashMap = Factory.creator(1);
优点:我们无需提供具体的子类类名,只需要提供一个字符串即可得到相应的实例对象。这样的话,当子类的类名更换或者增加子类时我们都无需修改客户端代码,只需要在简单工厂类上增加一个分支判断代码即可。
缺点:所有内容全部放在工厂里面了,导致工厂类比较复杂

3.工厂模式

工厂接口
public interface FactoryInterface {
    Map creator();
}
工厂实现类
public class HashMapFactory implements FactoryInterface {
    public Map creator() {
        System.out.println("hashmap");
        return new HashMap();
    }
}
public class TreeMapFactory implements FactoryInterface {
    public Map creator() {
        System.out.println("treeMap");
        return new TreeMap();
    }
}

调用通过反射:

FactoryInterface hashMapFactory = (FactoryInterface) Class.forName("com.jd.xq.HashMapFactory").newInstance();
FactoryInterface treeMapFactory = (FactoryInterface) Class.forName("com.jd.xq.TreeMapFactory").newInstance();
Map treeMap = treeMapFactory.creator();
Map hashMap = hashMapFactory.creator();


相关文章
|
24天前
|
设计模式 Java
实现一个工厂模式
实现一个工厂模式
23 0
|
2月前
|
设计模式 调度
重看工厂模式
重看工厂模式
16 0
|
设计模式 C++
【C++】—— 工厂模式详解
【C++】—— 工厂模式详解
|
2月前
|
设计模式 Java
详细讲解什么是工厂模式
详细讲解什么是工厂模式
工厂模式——学雷锋做好事
工厂模式——学雷锋做好事
|
8月前
|
存储 设计模式 Java
多种工厂模式的运用
多种工厂模式的运用
27 0
|
9月前
|
前端开发
复杂工厂模式
复杂工厂模式
51 1
|
10月前
|
设计模式 Java Spring
工厂模式
工厂模式
46 0
|
10月前
|
C++
【C++提高】 工厂模式
【C++提高】 工厂模式
36 0
简单的工厂模式和工厂方法模式
简单的工厂模式和工厂方法模式