android-学渣系列- 设计模式学习 - 抽象工厂
2019-01-07 本文已影响19人
品味与回味
1111.jpg
image.png
提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体的类
这是抽象工厂的定义
我现在吧这个和工厂模式一起拿出来
image.png
他的模式方法就是定义一个创建对象的接口,让子类决定实例化哪一个类
public abstract class network {
public Http getHttp(){
return null;
}
}
public class retrifithttp extends network {
@Override
public Http getHttp() {
return super.getHttp();
}
}
public abstract class iFactporynetwork {
public abstract network getnetwork();
public abstract newworkgetHttps getnetworks();
}
public class httpIfactory extends iFactporynetwork {
@Override
public retrifithttp getnetwork() {
return null;
}
@Override
public newworkgetHttps getnetworks() {
return null;
}
}
/**
* 工厂模式,
* 思考一下 下面的方法,比如以后加入新的方式 只需要在接口中加入新的方法
* 然后新建相应的工厂模式就可以
*
* 什么是工厂模式呢
* 定义了一个常见对象的接口,然后让他的子类决定实例化哪一个类吗,
* 也就是上面我们写的 httpIfactory httpsIfactory 来决定创建哪一个对象
*
* 对我们来说 network 就是一个对象,我们封装这个对象之后,
* 然后通过接口的子类来创建这个对象, 以后在添加新的对象 我们只添加就可以完成功能
* 而且这个是创建对象的模式哦 大家记清楚
*
*/
iFactporynetwork iFactporynetwork = new httpIfactory();
network network = iFactporynetwork.getnetwork();
如果会添加新的对象的时候就可以仿写retrifithttp 这样就达到了 我们的开放封闭原则, 写到这里 我们在来看一下 这个是抽象工厂的区别是什么?
区别
- 工厂模式针对的是一个产品 抽象针对的是 抽象工厂创建的是一系列 相互依赖的对象接口
相同点
- 都是创建型模式,一个是创建一个对象,另一个是创建多个产品,过程都是现有产品,然后抽象这个产品的工厂属性, 实现的方式其实都是差不多的。只不过抽象的方便与扩展,那么抽象工厂的缺点也是很明显的,那就是抽象工厂基类包含了所有抽象产品的抽象方法。 这也导致了 如果我们 添加的话,会导致其他的抽象方法扩展。 毕竟实现接口就要实现内部所有方法,当添加很多产品的时候,就需要添加很多的地方。