Android中遇到的简单工厂模式的几种实现
16lz
2021-01-23
废话一大堆:工厂模式有简单工厂模式,工厂方法模式 抽象工厂模式这三种工厂模式各自有各自的应用场景,根据需要灵活选择。
简单工厂模式实现1:
定义一个School接口
public interface School { StudentOne getStundent();}
定义接口实现类
public class SchoolImpl implements School { @Override public StudentOne getStundent() { StudentOne studentOne =new StudentOne("小明","三班"); return studentOne; }}
Demo
School schoolInterface = new SchoolImpl(); schoolInterface.getStundent();
2.根据参数生产不通的实现
定义接口实现类Two
public class SchoolImpl_Two implements School { @Override public StudentOne getStundent() { StudentOne studentOne = new StudentOne("小兰","四班"); return studentOne; }}
定义一个工厂类传入需要的参数
public class ParameterFactory { public static School getStudent(int parameter){ switch (parameter){ case 1 : School school = new SchoolImpl(); return school; case 2: return new SchoolImpl_Two(); } return null; }}
Demo:
School school1 = ParameterFactory.getStudent(2); school1.getStundent();
3.根据配置文件产生不同的实现
添加配置文件config.properties
create_a=com.example.moveso.factory.impl.SchoolImplcreate_b=com.example.moveso.factory.impl.SchoolImpl_Two
定义配置文件读取类
public class PropertiesFactory { public static School whoAtSchool(Context context, String key) { Properties properties = new Properties(); try { InputStream inputStream = context.getAssets().open("config.properties"); //如果放入了app/src/mian/res/raw文件中// InputStream inputStream1 = context.getResources().openRawResource("config.properties"); //java寫法// InputStream inputStream2 = PropertieaFactory.class.getResourceAsStream("assets/config.properties"); properties.load(inputStream); Class clazz = Class.forName(properties.getProperty(key)); return (School) clazz.newInstance(); } catch (Exception e) { e.printStackTrace(); } return null; }}
demo实现:
School school = PropertiesFactory.whoAtSchool(this,"create_a"); school.getStundent(); School school2 = PropertiesFactory.whoAtSchool(this,"create_b"); school2.getStundent();
代买写的比较乱以后会改进,根据需求3种方式实现的简单工厂模式
更多相关文章
- android的singleInstance启动模式及方法调用
- RadioButton和CheckBox自定义按钮图片的样式
- android activity 四大启动模式及使用场景
- Android自定义控件布局刷新自定义控件回到初始位置问题的解决
- Android declare-styleable:自定义控件的属性(attr.xml,TypedArra
- Android在MTP模式下,只显示指定文件夹
- Android Studio & ADT 快捷键配置文件所在目录,自定义后可导入导