美文网首页
android-学渣系列- 设计模式学习 - 抽象工厂

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

作者: 品味与回味 | 来源:发表于2019-01-07 22:16 被阅读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 这样就达到了 我们的开放封闭原则, 写到这里 我们在来看一下 这个是抽象工厂的区别是什么?

    区别

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

    相同点

    • 都是创建型模式,一个是创建一个对象,另一个是创建多个产品,过程都是现有产品,然后抽象这个产品的工厂属性, 实现的方式其实都是差不多的。只不过抽象的方便与扩展,那么抽象工厂的缺点也是很明显的,那就是抽象工厂基类包含了所有抽象产品的抽象方法。 这也导致了 如果我们 添加的话,会导致其他的抽象方法扩展。 毕竟实现接口就要实现内部所有方法,当添加很多产品的时候,就需要添加很多的地方。

    相关文章

      网友评论

          本文标题:android-学渣系列- 设计模式学习 - 抽象工厂

          本文链接:https://www.haomeiwen.com/subject/dkaprqtx.html