android-学渣系列- 设计模式学习 - 抽象工厂

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 这样就达到了 我们的开放封闭原则, 写到这里 我们在来看一下 这个是抽象工厂的区别是什么?

区别

  • 工厂模式针对的是一个产品 抽象针对的是 抽象工厂创建的是一系列 相互依赖的对象接口

相同点

  • 都是创建型模式,一个是创建一个对象,另一个是创建多个产品,过程都是现有产品,然后抽象这个产品的工厂属性, 实现的方式其实都是差不多的。只不过抽象的方便与扩展,那么抽象工厂的缺点也是很明显的,那就是抽象工厂基类包含了所有抽象产品的抽象方法。 这也导致了 如果我们 添加的话,会导致其他的抽象方法扩展。 毕竟实现接口就要实现内部所有方法,当添加很多产品的时候,就需要添加很多的地方。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容