web设计模式中工厂模式有哪些

本篇内容介绍了“web设计模式中工厂模式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的自流井网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

简单工厂模式

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

模式结构

简单工厂模式包含如下角色:

  • Factory:工厂角色,工厂角色负责实现创建所有实例的内部逻辑

  • Product:抽象产品角色,抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的公共接口

  • ConcreteProduct:具体产品角色,具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。

源码导读

 public static void main(String[] args) {
        // 资源加载
        ClassPathResource classPathResource = new ClassPathResource("spring-bean.xml");
        // XmlBeanFactory 加载资源并解析注册bean
        BeanFactory beanFactory = new XmlBeanFactory(classPathResource);
        // BeanFactory.getBean();
        UserBean userBean = (UserBean) beanFactory.getBean("userBean");
        System.out.println(userBean.getName());
}

这个XmlBeanFactory便可以看做是一个稍微变形的简单工厂,getBean()方法便是获取产品的实例方法,userBean便是我们的产品。如果我们以后遇到与spring中XmlBeanFactory类似场景我们便可依瓢画葫芦写出一个漂亮的简单工厂。

工厂方法模式

也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

模式结构

工厂方法模式包含如下角色:

  • Product:抽象产品

  • ConcreteProduct:具体产品

  • Factory:抽象工厂

  • ConcreteFactory:具体工厂

源码导读

java.util.Collection接口中定义了一个抽象的iterator()方法,该方法就是一个工厂方法。 我们来看看ArrayList中的iterator()实现

@NotNull public Iterator<E> iterator() {
    return new ArrayList.Itr();
}

它new了一个ArrayList的内部类Itr 然后将其返回,Itr:

private class Itr implements Iterator<E> {
        int cursor;
        int lastRet = -1;
        int expectedModCount;

        Itr() {
            this.expectedModCount = ArrayList.this.modCount;
        }
   ......
   ......
}

这里ArrayListIterator来说就是一个工厂类,它的iterator()方法便是生产Iterator的工厂方法。

抽象工厂

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。

模式结构

抽象工厂模式包含如下角色:

  • AbstractFactory:抽象工厂

  • ConcreteFactory:具体工厂

  • AbstractProduct:抽象产品

  • Product:具体产品

源码导读

我们可以看到 抽象工厂和工厂方法的区别是——抽象多了生产相关联产品的其他方法。可以理解为对工厂方法的一个升级,我们来看HashMap这个类:

     HashMap<Object, Object> objectHashMap = new HashMap<>();
     Set<Map.Entry<Object, Object>> entries = 		     objectHashMap.entrySet();
     Collection<Object> values = objectHashMap.values();

这里HashMap 就是抽象工厂,它的values()entrySet()就是两个工厂方法, Collection<Object>Set<Map.Entry<Object, Object>>是产品。注意:抽象工厂中抽象的含义是对产品的抽象,不再是某个产品,而是某系列产品,工厂模式类命名一般以factory结尾。

“web设计模式中工厂模式有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!

分享标题:web设计模式中工厂模式有哪些
路径分享:https://www.cdcxhl.com/article10/jjhpdo.html

成都网站建设公司_创新互联,为您提供网站策划网站设计面包屑导航响应式网站网站内链标签优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站建设网站维护公司