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