java工厂模式的小理解(一)

来源:互联网 发布:象棋拆棋软件 编辑:程序博客网 时间:2024/06/14 15:05

java工厂模式的小理解(一)

一直觉得自己写的代码在耦合性上不理想,原因就是在许多的设计模式上非常不理解,也懒得去涉及。但是现在看来之前写的代码,冗余实在太多,现在都看不懂一周前写的代码。于是从今天开始就好好学习安卓的设计模式。
java的工厂模式在项目中经常用到,今天就从这里开始学习。好哒,开始啦。。。。。。

简单工厂模式

工厂模式,顾名思义就是在工厂里面完成产品的生产,一个工厂可以生产很多产品。比如奥迪的工厂,生产奥迪的车子,但是他可以生产Q3,Q5,Q7等一系列的车子。顾客提出要求要一辆购买Q5时,工厂马上就能生产Q5而不是生产其他的车系。
表达不好见谅,具体还是看代码比较好懂

抽象工厂类

package demo.pplive.com.test;/** * Created by jixiongxu * on 2017/9/27. */public abstract class Factory{    public abstract <T extends AudiCar> T CreatCar(Class<T> clz);}

实体工厂类

package demo.pplive.com.test;/** * Created by jixiongxu  * on 2017/9/27. */public class RFactory extends Factory{    @Override    public <T extends AudiCar> T CreatCar(Class<T> clz)    {        AudiCar car = null;        try        {            car = (AudiCar) Class.forName(clz.getName()).newInstance();        }        catch (Exception e)        {            e.printStackTrace();        }        return (T) car;    }}

抽象奥迪车类

package demo.pplive.com.test;/** * Created by jixiongxu  * on 2017/9/27. */public abstract class AudiCar{    public abstract void Drive();}

实体奥迪车类Q3

/** * Created by jixiongxu  * on 2017/9/27. */public class AudiQ3 extends AudiCar{    @Override    public void Drive()    {        Log.d("jixiongxu:","AudiQ3");    }}

实体奥迪车类Q5

package demo.pplive.com.test;import android.util.Log;/** * Created by jixiongxu  * on 2017/9/27. */public class AudiQ5 extends AudiCar{    @Override    public void Drive()    {        Log.d("jixiongxu:","AudiQ5");    }}

实体奥迪车类Q7

package demo.pplive.com.test;import android.util.Log;/** * Created by jixiongxu  * on 2017/9/27. */public class AudiQ7 extends AudiCar{    @Override    public void Drive()    {        Log.d("jixiongxu:", "AudiQ7");    }}

到这里基本就完成了所以工厂和汽车的编写,接下来是客户提出需要,要求在工厂中生产

        Factory factory = new RFactory();        AudiQ3 q3 = factory.CreatCar(AudiQ3.class);        AudiQ5 q5 = factory.CreatCar(AudiQ5.class);        AudiQ7 q7 = factory.CreatCar(AudiQ7.class);        q3.Drive();        q5.Drive();        q7.Drive();

结果如下:
这里写图片描述

关于工厂模式的使用

目前在公司的项目中大致了解到使用的方向是在筛选view,一般来说,视频首页的许多数据会绑定各种各样的View,我们可以根据特定的标识符去获取到相关的view来展示。

notif

在这篇文章中使用反射来减少代码量,当然你也可以自己写固定的方法。

原创粉丝点击