工厂模式主要分为简单工厂模式、工厂方法模式和抽象工厂模式。
- 简单工厂模式
简单工厂模式由名称可知是一种比较简单的模式,改模式主要作用是用来创建实例对象,但将对象的创建过程隐藏起来。
/**
* @创建者 lucas
* @创建时间 2018/3/10 0010 15:23
* @描述 简单工厂模式
*/
public class SimpleFactory {
private SimpleFactory() {
}
//类 A B 集成或者实现与super类
public static Super create(int type) {
Super instance = null;
switch (type) {
case 0: {
instance = new A();
}
case 1: {
instance = new B();
}
}
return instance;
}
}
- 工厂方法模式
工厂方法模式是对简单工厂模式的抽象,实体的创建不再有一个方法决定,而是由单个具体的工厂来创建。每个实体的创建都对应一个具体的工厂。相比于简单工厂模式的好处是需要扩展新的实体类的时候不必去修改之前的方法,只需要重新创建新的工厂。缺点是生成大量的文件。
/**
* @创建者 lucas
* @创建时间 2018/3/10 0010 15:37
* @描述 工厂方法模式
*/
//抽象的实体父类
interface EntitySuper {
void print();
}
//具体的实体类
class EntityA implements EntitySuper {
@Override
public void print() {
Log.d("EntityA", "我是实体类A");
}
}
//抽象的工厂
interface FactorySuper {
EntitySuper create();
}
//具体的工厂类
class FactoryA implements FactorySuper{
@Override
public EntitySuper create() {
return new EntityA();
}
}
//测试
public class MethodFactory {
public static void main(){
FactoryA factoryA = new FactoryA();
EntitySuper entitySuper = factoryA.create();
entitySuper.print();
}
}
- 抽象工厂模式
抽象工厂模式是将业务进行抽象化,工厂暴露创建业务实体的方法。
/**
* @创建者 lucas
* @创建时间 2018/3/16 0016 16:00
* @描述 抽象工厂模式
*/
//抽象类种子
interface Seed {
//发芽
void sprouting();
}
//手机
interface Mobile {
//充电
void charge();
}
//苹果种子
class AppleSeed implements Seed {
@Override
public void sprouting() {
Log.d("AppleSeed", "苹果种子发芽了");
}
}
//安卓手机
class AndroidMobile implements Mobile {
@Override
public void charge() {
Log.d("AndroidMobile", "安卓手机开始充电");
}
}
//抽象工厂
interface IFactory {
Seed createSeed();
Mobile createMobile();
}
//具体工厂
class Defactory implements IFactory{
@Override
public Seed createSeed() {
return new AppleSeed();
}
@Override
public Mobile createMobile() {
return new AndroidMobile();
}
}
public class AbsFactory {
void test() {
Defactory defactory = new Defactory();
Mobile mobile = defactory.createMobile();
mobile.charge();
Seed seed = defactory.createSeed();
seed.sprouting();
}
}