废话一大堆:工厂模式有简单工厂模式,工厂方法模式 抽象工厂模式这三种工厂模式各自有各自的应用场景,根据需要灵活选择。

简单工厂模式实现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种方式实现的简单工厂模式

更多相关文章

  1. android的singleInstance启动模式及方法调用
  2. RadioButton和CheckBox自定义按钮图片的样式
  3. android activity 四大启动模式及使用场景
  4. Android自定义控件布局刷新自定义控件回到初始位置问题的解决
  5. Android declare-styleable:自定义控件的属性(attr.xml,TypedArra
  6. Android在MTP模式下,只显示指定文件夹
  7. Android Studio & ADT 快捷键配置文件所在目录,自定义后可导入导

随机推荐

  1. Android(安卓)RadioButton与ListView的混
  2. android WebView网页浏览器
  3. Android(安卓)SDK/ADT 历史版本下载地址
  4. android shape的使用
  5. android studio 2.2下载地址
  6. 垂直跑马灯、滚动通知
  7. Android头部停留及分页加载功能整合列表
  8. Android超炫日期日历控件:TimesSquare
  9. 【4.2】Android_Edittext/Button
  10. 从零开始学android-一行两个按钮居中 布