工厂模式顾名思义就是用工厂来生产具体的产品。可以根据是具体产品还是具体工厂分为简单工厂模式和
工厂方法模式,根据工厂是否为抽象 可以分为抽象工厂模式和工厂方法模式。
简单工厂模式就是一家工厂根据给定的(传入的)不同的材料(参数)生产出具体不同种类的产品。如图所示:
下面看实际运用的代码再来具体解释:
import android.util.SparseArray;
import androidx.fragment.app.Fragment;
import com.juexing.payassistant.activity.main.OrderReciveFragment;
import com.juexing.payassistant.activity.main.UnderwayFragment;
public class FragmentFactory {
private static final int zero = 0;//订单接收
private static final int one = 1;//进行中
public static SparseArray<Fragment> fragments = new SparseArray<>();
public static Fragment createFragment(int position) {
Fragment fragment = fragments.get(position);
if (fragment == null) {
switch (position) {
case zero:
fragment = new OrderReciveFragment();
break;
case one:
fragment = new UnderwayFragment();
break;
}
fragments.put(position, fragment);
}
return fragment;
}
}
``
`在日常开发中常常一个复杂的acitivity内通常要创建多个fragment,所以可以抽象出一个FragmentFactory类 来生产具体的fragment(实例化),(为了节省内存使用了android自己独特的稀疏数组 数据结构 sparseArray),根据传入的参数position参数(生产的材料)来实例化具体的fragment(生产产品)。
private SparseArray<Fragment> fragments = new SparseArray<>();
private String[] titles = new String[]{"接单","进行中"};
for(int i=0;i<titles.length;i++){
tabLayout.addTab(tabLayout.newTab());
FragmentFactory.createFragment(i);
}
fragments=FragmentFactory.fragments;
想要简单了解sparseArray可以去看看这篇blog:
sparseArray的浅析