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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值