工厂(factory)模式

2023-10-27

转自:  http://www.cnblogs.com/hegezhou_hot/archive/2010/11/30/1892227.html

一、开篇

        一个多月没有写文章了,一方面是由于家庭的原因,还有一方面是因为工作上的原因,所以在这里给大家说抱歉了,这段时间也是有很多热心的朋友,一直询问我,什么时候能把相关的

系列文章写完,其实我也特别的想赶快的把相关的文章书写完毕,不过现在真的是有时候力不从心,家庭和工作上的事情需要都处理好,所以属于个人思考的时间可能就会相对的少一些了,不

过我会继续努力,出时间来把下面的这几个系列写完:

        1、系统架构技能之设计模式-系列索引

        2、系统架构师-基础到企业应用架构-系列索引

        3、Step by Step-构建自己的ORM系列

        当然可能在我写的过程中又会产生新的想法或者思路,我会提出来,并且给出相应的实现方案的。希望大家能够集思广益,能够创造出适合大家的通用的解决某类 问题的通用解决方案,

那么就真的是大功告成了,呵呵,闲话不多说了,我们还是来实质性的东西吧,本文主要是讲述设计模式中最经典的创建型模式-工厂模式,本文将会从以下几点对工厂模式进行阐述。

        image

        本文将会从上面的四个方面进行详细的讲解和说明,当然会的朋友可以之处我的不足之处,不会的朋友也请我们能够相互学习讨论。

二、摘要

        本文将会主要是结合项目中的一些实例作为实例来分析工程模式的使用方式和何时使用工程模式,并且分析工程模式的有点和它解决的问题,在我们实际的项目中何时能使用到它,或者

说我们在什么情况下,应该考虑使用工厂模式来解决项目中的问题,一般情况下我们可以这样理解设计模式,设计模式是一种方案,为我们遇到与设计模式提出的应用场景想象或者相仿的场景

中,这类问题通常是经常发生或者是经常遇到的问题的通用解决方案。

        本文依然是采用图文讲解的形式来分析工程模式在项目中出现的位置,并且给出几个灵活的实现方案。主要针对的实现方式有:通过配置文件,通过类型,通过委托,通过特性等来实现工厂。

三、本文大纲

       a、开篇。

       b、摘要。

       c、本文大纲。

       d、工厂模式的特点及使用场景。

       e、工厂模式的实现方案。

       f、工厂模式使用总结。

       g、系列进度。

       h、下篇预告。

四、工厂模式的特点及使用场景

4.1、工厂模式简介

        工厂模式是创建型模式中最典型的模式,主要是用来创建对象,减少我们在使用某个对象时的new() 操作,我相信大家都有这样的困惑,目前我所在的项目都在程序开发的过程中,还是

有很多的new()操作出现在表现层中,并没有通过工厂来创建对象,一方面可能是因为我们自身比较懒,不规范项目的编码形式,另外一方面也是由于项目的进度比较紧,没有那么多的时间去

完成工厂的统一创建,当然对于这样的动态创建对象的工厂,推荐的做法还是我们后面会讲到的创建型模式--《抽象工厂模式》来解决吧。

        如果您并不知道工厂模式是用来干什么的,我们可以通过如下举例来说明,例如我们现在有个矿泉水加工厂,加工矿泉水,我们现在知道有矿泉水这个对象,那么当我批量生产矿泉水的

时候,我们就通过工厂来批量的生产,等于我们程序中的批量创建对象。这时候我有很多个对象,也就是很多游客,他们每人都要一瓶矿泉水,这时候如果说把游客比作不同的应用程序模块,

都要使用矿泉水这个对象,那么我是不是应该每个应用程序都在使用这个对象的时候,我使用new()操作呢?,无疑这不是一个好的方案。我们来看看图形化的描述吧?

image这种情况下,不同的游客需要矿泉水的时候,我就new()一个矿泉水和我找个加工厂生产矿泉水明显是有差别的,这个时候,游客不应该和矿泉水有

关联关系了,而且游客不知道,矿泉水是怎么生产出来的,也不需要关心这些东西。

        那么我们应该如何去解决这样的问题呢?基于面向对象的变成设计时,原则就是低耦合,对象和对象之间。那么对象之间的引用关系,可以通过抽象出接口,通过借口的依赖来解耦,降低系统的耦合性。

        image假如这个时候我修改对象服务的名称,那么我是不是必须把所有的调用这个对象服务应用程序代码都进行

修改?这个是必须的,否则程序无法编译通过的。但是如果我们使用工厂模式的时候呢?有什么不同呢?我们来看看:

        image上面是添加了工厂模式之后的情况,上面就算是你修改了类名之后,只

需要修改工厂中的New出来的类即可,当然如果你要是通过返回接口的形式的话,再不修改接口命名的前提下,如何修改类方法都是可行的,并且通过工厂模式,无疑降低了应用程序与对象之

间的耦合性,通过工厂来解耦,提供程序的应对变化的适应能力。

4.2、工厂模式的使用场景

           工厂模式一般用于创建一类对象,而不用每次在使用时通过new()对象才能使用对象,而是通过工厂来完成对象的创建,这样不但提供了统一创建对象的入口,而且对于程序的可维护

和可测试性都有很大的提高。总体来说如下场景使用工厂模式非常合适:

          1、工厂负责创建某一类对象的时候,或者说工厂的职责比较单一时,如果说多个类型的对象时候,用工厂模式就不如使用抽象工厂了

          2、一般比较少的积累对象,可以通过类型的判定创建不同的对象时,也是可以通过工厂模式来完成,例如多数据库的支持,我们在设计数据访问层时,利用简单对象工厂,通过枚举或

者配置文件的形式,来动态的创建数据访问层实例。

          3、一般来说类型单一的对象,或者类型比较少的时候,使用工厂模式来创建对象可以解决一类问题。还可以通过一个总的工厂,来创建多个工厂,然后多个工厂负责创建相应的实例,

有点类似我们平时说的目录结构似的。

          类似如下的形式,大家一看就明白了:

          image

         等于是不同层级的工厂,具有不同的职责和任务。

五、工厂模式的实现方案

         5.1、工厂模式的配置文件实现。

            我们先看配置文件的配置内容

           <DatabaseInfo> 
           <ConnKey>default</ConnKey> 
          <DataBaseType>MSSQLServer</DataBaseType> 
          </DatabaseInfo>

    定义要创建的对象实例统一接口

    /// <summary> 
    /// 所有的数据访问接口 
    /// </summary> 
    public interface IDbAccess 
    { 
    }

    实现这个接口的具体类

public class SQLServer : IDbAccess 
   { 
       //相关的方法 
       public System.Data.SqlClient.SqlConnection Connection 
       { 
           get 
           { 
               return new System.Data.SqlClient.SqlConnection(); 
           } 
       } 
   }

     负责创建返回类型为IDbAccess的数据访问层对象实例

public class DBFactory 
    { 
        public IDbAccess Create() 
        { 
            IDbAccess instance = null;

            System.Xml.XmlDocument doc=new System.Xml.XmlDocument(); 
            doc.LoadXml("");

            XmlElement root = doc.DocumentElement;//XML文档的根节点 
            XmlNode node = root.SelectSingleNode("DataBaseType");

            switch (node.InnerText) 
            { 
                case "SQLServer": 
                    instance = new SQLServer(); 
                    break; 
                case "Oracle": 
                    instance = new Oracle(); 
                    break; 
                default: 
                    break; 
            }

            return instance; 
        } 
    }

具体的控制台输出测试代码如下:


class Program 

    static void Main(string[] args) 
    { 
        DBFactory factory = new DBFactory(); 
        IDbAccess dbaccess = factory.Create();

        //使用相应的数据访问对象即可。 
    } 
}

5.2、通过枚举来实现。

通过枚举来实现后,工厂类的创建代码如下:

public class DBFactory 
    { 
         public IDbAccess CreateByEnum(DbType dbType) 
        { 
            IDbAccess dbAccess = null;

            switch ((int)dbType) 
            { 
                case (int)DbType.SQLServer: 
                    dbAccess= new SQLServer(); 
                    break; 
                case (int)DbType.Oracle: 
                    dbAccess = new Oracle(); 
                    break; 
                case (int)DbType.Access: 
                    dbAccess = new Access(); 
                    break; 
                default: 
                    break; 
            }

            return dbAccess; 
        } 
    }

相应的枚举代码如下:


public enum DbType 

    SQLServer=0, 
    Oracle=1, 
    Access=2 
}

 

相应的控制台测试代码:

static void Main(string[] args) 
        { 
            DBFactory factory = new DBFactory(); 
            IDbAccess dbaccess = factory.CreateByEnum(DbType.SQLServer);

            //使用相应的数据访问对象即可。 
        }

5.3、工厂模式的复杂进阶

我们上面只是定义了一种工厂,该工厂负责所有的子类对象的创建,如果说我们的工厂要求能够满足增加新的对象时,我们必须修改工厂代码,那么我们如何来做呢?我们可以这

样来做。

image每个类型的对象都有与这个类型对应的工厂去创建,那么就算以后增加或者修

改,只需要修改相应的工厂涉及的文件即可。但是这样也有很大的弊端就是工厂类太多,难以维护。优点是支持动态的增加新的对象类型,对之前的创建工作不会造成影响,我们

来看看相应的代码,基于图中的几个类型。先定义对象的统一接口和工厂的接口。

先看对象接口的统一定义:

public  interface IComObject 
    { 
        /// <summary> 
        /// 重要级别 
        /// </summary> 
        /// <returns></returns> 
        int ImportLevel(); 
    }

工厂接口的统一定义:

public interface IComFactory 
    { 
        IComObject Create(); 
    }

我们来看看具体的对象实现和工厂实现吧,我们这里以上图中的书为例说明创建过程


public class BookFactory : IComFactory 

    public IComObject Create() 
    { 
        return new Book(); 
    } 
}

具体的对象实现代码-实现IComObject对象接口

public class Book : IComObject 
    { 
        public int ImportLevel() 
        { 
            return 0; 
        } 
    }

我们来看看具体的程序调用代码:

static void Main(string[] args) 
        { 
            IComFactory factory = new BookFactory(); 
            IComObject book = factory.Create();

            //使用相应的数据访问对象即可。 
        }

通过上面的形式,我们可以看到,后期如果新增比如说我现在要对个产品这个对象新增到系统中,那么我们只需要增加相应的对象实现类和工厂实现类即可,对其他地方不会有影

响,相比上面讲述的,一个工厂创建所有的对象实例的方式无疑提供了新增对象类型创建的能力。

六、工厂模式使用总结

         通过上面的简单实例讲解,估计高手理解起来很容易也很简单,其实本来也是很简单的,大伙不了解工厂模式的朋友,应该也能理解讲述的内容,本文前面讲述的2中方式主要是针对简

单工厂模式,简单工厂模式,不符合高内聚的原则,因为所有的对象的创建工作都放在一个类的内部去完成,逻辑太复杂了,通过后面的工厂模式,将每个工厂的职责进行了更细化,每个工厂

只负责具体对象类型实例的创建。这也为后期增加新的对象类型提供了不错的扩展,本文并没有给出特性+委托的工厂的实现方案,我放在下篇的抽象工厂中去讲解,也会针对配置文件,特性,委

托的几种方式来给出抽象工厂模式的实现方案,当然我给出的都是很简单的例子,希望大家一看就懂,就能用在实际的项目中,可能高手会认为我讲的太浅了,一方面是因为自己没有整理好思

路,时间紧迫,另一方面是因为自身能力有限,还请大家多提宝贵意见,我们总结下本文讲述的内容吧;

         前面讲述了2中简单工厂模式的实现方案。通过配置文件、通过枚举来完成对象的创建,其实就是根据对象的类型来完成,也可以通过反射来完成。这里给出简单的实现:

public IDbAccess Create(string TypeName) 
        { 
            Type type = Type.GetType(TypeName); 
            IDbAccess obj = (IDbAccess)Activator.CreateInstance(type); 
            return obj; 
        }

其实就是这样的简短代码,给出关键代码实现吧,可能实际运行中还要进行相应的调整。

总体来说简单工厂适合项目中类型不多的情况时使用简单工厂很方便。

当项目中频繁的增加不同类型的对象时,考虑使用工厂模式,来满足这样的动态变化需求。

七、系列进度

       创建型

        1、系统架构技能之设计模式-单件模式

        2、系统架构技能之设计模式-工厂模式

        3、系统架构技能之设计模式-抽象工厂模式

        4、系统架构技能之设计模式-创建者模式

        5、系统架构技能之设计模式-原型模式

        结构型

        1、系统架构技能之设计模式-组合模式

        2、系统架构技能之设计模式-外观模式

        3、系统架构技能之设计模式-适配器模式

        4、系统架构技能之设计模式-桥模式

        5、系统架构技能之设计模式-装饰模式

        6、系统架构技能之设计模式-享元模式

        7、系统架构技能之设计模式-代理模式

        行为型

        1、系统架构技能之设计模式-命令模式

        2、系统架构技能之设计模式-观察者模式

        3、系统架构技能之设计模式-策略模式

        4、系统架构技能之设计模式-职责模式

        5、系统架构技能之设计模式-模板模式

        6、系统架构技能之设计模式-中介者模式

        7、系统架构技能之设计模式-解释器模式

八、下篇预告。

            下篇将会针对抽象工厂模式进行讲述,该模式也是目前项目中使用最多的一个设计模式,目前我所在的项目中,就使用到了这个模式,我会对于前面讲述的工厂模式与抽象工厂模式进行对比,并且把今天文章中提到的特性+委托的方案放出实现,希望大家多提宝贵已经,错误之处还请指出,请大家继续支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工厂(factory)模式 的相关文章

  • c++享元模式

    享元模式 1 享元模式简介 享元模式在 设计模式 可复用面向对象软件的基础 一书中是这样说的 运用共享技术有效地支持大量细粒度的对象 本质就是对大量细粒度的对象进行共享 不是每个对象都要通过new的方式去创建 而是通过区分对象的内部状态和外
  • python语法(高阶)-设计模式(单例模式)

    参考内容 黑马程序员
  • 设计模式之(三)---工厂方法模式

    女娲补天的故事大家都听过吧 这个故事是说 女娲在补了天后 下到凡间一看 哇塞 风景太优美了 天空是湛 蓝的 水是清澈的 空气是清新的 太美丽了 然后就待时间长了就有点寂寞了 没有动物 这些看的到 都是静态的东西呀 怎么办 别忘了是神仙呀 没
  • Java设计模式:装饰者模式(Decorator Pattern)

    装饰者模式 涉及的重要设计原则 类应该对扩展开放 对修改关闭 装饰者模式定义 装饰者模式动态地将责任附加到对象上 若要扩展功能 装饰者提供了比继承更有弹性的替代方案 UML类图 装饰者模式事例 咖啡店 咖啡种类 1 深焙咖啡 DarkRoa
  • java需会(转载)

    一 基础篇 1 1 Java基础 面向对象的特征 继承 封装和多态 final finally finalize 的区别 Exception Error 运行时异常与一般异常有何异同 请写出5种常见到的runtime exception i
  • 设计模式--组合模式

    组合模式 又叫部分整体模式 属于结构型模式 基本原理 以树形的结构将相似的对象组合起来 主要流程 1 创建对象 2 在对象中设置用来存放下一级相似对象的数据结构 3 在对象中设置增删改查等功能 注意 这种模式和数据结构中的树形结构相似 in
  • 计算资源合并模式——云计算架构常用设计模式

    背景 云计算的解决方案中 最初设计可能有意遵循关注点分离的设计原则 把操作分解为独立的计算单元以便可以单独托管和部署 然而 虽然这种策略可以帮助简化解决方案的逻辑实现 但是在同一个应用程序中要部署大量的计算单元 这会增加运行时的托管成本 并
  • Java设计模式-装饰者模式Decorator

    介绍 装饰者模式的核心思想是通过创建一个装饰对象 即装饰者 动态扩展目标对象的功能 并且不会改变目标对象的结构 提供了一种比继承更灵活的替代方案 需要注意的是 装饰对象要与目标对象实现相同的接口 或继承相同的抽象类 另外装饰对象需要持有目标
  • 设计模式——简单工厂模式

    简单工厂模式定义为 简单工厂模式又称为静态工厂方法模型 它属于类创建型模式 在简单工厂模式中 可以根据参数的不同返回不同类的实例 简单工厂专门定义一个类来负责创建其他类的实例 被创建的实例通常都具有共同的父类 简单工厂模式结构图 简单工厂模
  • 设计模式一之简单工厂模式

    生活示例 刻板印刷 gt 活字印刷举例 喝酒唱歌 人生真爽 gt 对酒当歌 人生几何 可维护 需要修改 则只需要改需要改的字即可 可复用 字体可在后来的印刷复用 可扩展 需要加字 只需要加入相应的刻字即可 灵活性好 字的排列可能竖排或横排
  • 程杰“大话设计模式”中的设计原则

    单一职责原则 SRP 就一个类而言 应该仅有一个引起它变化的原因 如果一个类承担的职责过多 就等于把这些职责耦合在了一起 一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力 这种耦合会导致脆弱的设计 当发生变化时 设计会遭受到意想不到
  • 设计模式 -- 工厂模式(Factory Pattern)

    简单工厂模式 Simple Factory Pattern 根据传入的参数决定实例化哪个对象 优点 不直接在客户端创建具体产品的实例 降低了耦合性 缺点 违反了开闭原则 对扩展开放 对修改关闭 不容易形成高内聚松耦合结构 每当我们增加一种产
  • Java并发编程之设计模式

    同步模式之保护性暂停 1 定义 即 Guarded Suspension 用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程 让他们关联同一个 GuardedObject 如果有结果不断从一个线程到另一个线
  • 每日一问:你想如何破坏单例模式?

    前言 1 单例是什么 单例模式 是一种创建型设计模式 目的是保证全局一个类只有一个实例对象 分为懒汉式和饿汉式 所谓懒汉式 类似于懒加载 需要的时候才会触发初始化实例对象 而饿汉式正好相反 项目启动 类加载的时候 就会创建初始化单例对象 1
  • 设计模式(2)

    2 2 结构型模式 结构型模式一共有七种 其中 适配器模式和装饰模式统称为包装模式 装饰模式和代理模式的类图基本相同 但目的不同 这些有相似目的或者有相似结构的模式需要对其概念辨析清楚 才能较好地掌握 下面将对结构型模式分别进行介绍 2 2
  • 二十四种设计模式之策略模式

    一 什么是策略模式 简单来说 策略模式是将每一个算法封装到拥有共同接口的不同类中 使得算法可以在不影响客户端的情况下发生变化 也可以理解为可供程序运行时选择的 不同的类 不同的解决方案 策略模式的特点 高内聚低耦合 可扩展 遵循ocp原则
  • 设计模式详解---策略模式

    1 策略模式简介 策略模式 Strategy Pattern 是一种行为型设计模式 用于在运行时根据不同的情境选择不同的算法或策略 该模式将算法封装成独立的类 使得它们可以相互替换 而且可以独立于客户端使用它们的方式 1 1 主要角色 上下
  • 在AI技术的无情侵袭下,学学Java的23种设计模式还是非常有必要的

    目前国内80 程序员的主要工作是调用组合api实现各种业务需求 在顶层架构师设定好的框架下 做着重复且无聊的编码工作 如果未来ai被广泛应用 那么被替代的风险是很高的 比较扎心的是 其实目前用ai生成片段代码已经是各个公司比较普遍的做法了
  • 【设计模式之美】理论一:怎么才算是单一原则、如何取舍单一原则

    文章目录 一 如何判断类的职责是否足够单一 二 类的职责是否设计得越单一越好 开始学习一些经典的设计原则 其中包括 SOLID KISS YAGNI DRY LOD 等 本文主要学习单一职责原则的相关内容 单一职责原则的定义 一个类只负责完
  • 【设计模式之美】面向对象分析方法论与实现(二):需求到接口实现的方法论

    文章目录 一 进行面向对象设计 1 划分职责 gt 需要有哪些类 2 定义类及其属性和方法 3 定义类与类之间的交互关系 4 将类组装起来并提供执行入口 二 如何进行面向对象编程 1 接口实现

随机推荐

  • java/lang/NoClassDefFoundError: java/lang/Object

    一 问题描述 本地原来已经安装了JAVA JDK1 7并配置好了环境变量 然后又安装了JDK1 8 想2个版本并存 然后发现eclipse 打不开 闪退 在命令行执行以下语句 C Users Administrator gt java ve
  • ECU-TEST 快速入门

    ECU TEST 是由位于德国德累斯顿的TraceTronic公司开发的一款用于嵌入式系统测试验证软件工具 自从2003年首次发布ECU TEST 该软件成为了汽车ECU开发的标准工具 同时也逐步成为了重型机械和工业自动化开发的标准工具 该
  • 数学建模竞赛培训:华为杯、高教社杯和数学建模国赛全面指南

    文章目录 赛事介绍 参赛好处 辅导比赛 赛事介绍 华为杯全国研究生数学建模竞赛是由华为公司主办的一项面向全国研究生的数学建模竞赛 该竞赛旨在通过实际问题的建模和解决 培养研究生的创新能力和团队合作精神 推动科技创新和应用 华为杯竞赛分为初赛
  • git commit报did not match any file known to git

    使用到以下命令时 git commit m project initialized 回车之后报错了 报了以下的错误 error pathspec initialized did not match any file s known to g
  • hive截取字符串substr和substring的用法

    第一种用法 substr string A int start 和 substring string A int start 用法一样 功效 返回字符串A从下标start位置到结尾的字符串 第二种用法 substr string A int
  • “最强”博士论文答辩阵容:6位院士,副院长任答辩秘书!

    点击 凹凸域 马上关注 更多内容 请置顶或星标 十二月份前后 是不少研究生毕业答辩的时间段 在社交媒体上 关于论文答辩的热度也逐渐上升 与此同时 也有网友注意到一些答辩委员会的阵容非常强大 比如 就有微博用户表示 其导师请了足以给博士生论文
  • layui table的实现以及详细解释

    老规矩先看效果 这里用的主要是layui 的弹框和table数据表格 第一 引入的文件 百度网盘地址 https pan baidu com s 1neZbcX8IieMgiBdcVPhO1g 提取码 rqdc 改成本地路径 这里也可以用l
  • 从 Vision 到 Language 再到 Action,万字漫谈三年跨域信息融合研究

    本文作者为阿德莱德大学助理教授吴琦 他在为雷锋网 AI 科技评论投递的独家稿件中回顾了他从跨领域图像识别到 Vision to Language 相关的研究思路 如今正将研究领域延伸到与 Action 相关的工作 雷锋网 AI 科技评论对文
  • 6.63 猜数字之生成随机数

    1 生成 m n 的随机数 m n 的元素个数为 n m 1 若利用模进行 n m 1 运算 其结果为 0 n m 此时左右两边同加 m 其结果为 m n void TestRand 生成 m n 的随机数 rand n m 1 m sra
  • Django图书商城系统实战开发 - 实现个人中心管理

    Django图书商城系统实战开发 实现个人中心管理 介绍 在本项目中 我们已经实现了登录注册 商品详情查看 购物车购买 个人订单管理 评价功能 接下来 我们将完成个人中心管理的模块 包括个人密码修改 个人地址管理和注销功能 本文将详细介绍如
  • I2C总结(单主机和多主机)

    I2C在使用过程中单个主机是不论是硬件I2C还是硬件I2C都不太难 理解好时序很容易实现 还有就是很多人认为硬件I2C有很多缺点 其实这是谬论吧 硬件I2C在稳定性上胜过软件I2C 而且不占用MCU时间 可以实现I2C中断 如果系统有硬件I
  • Java开发快速上手!3分钟就能完成的Redis主从复制搭建,完整PDF

    前言 高并发 几乎是每个程序员都想拥有的经验 原因很简单 随着流量变大 会遇到各种各样的技术问题 比如接口响应超时 CPU load升高 GC频繁 死锁 大数据量存储等等 这些问题能推动我们在技术深度上不断精进 我们知道 高并发代表着大流量
  • 【Flutter 3-1】Flutter手把手教程UI布局和Widget——底部导航栏BottomNavigationBar使用

    作者 弗拉德 来源 弗拉德 公众号 fulade me BottomNavigationBar BottomNavigationBar 和 BottomNavigationBarItem 配合来共同展示Flutter里面的底部状态栏 底部状
  • 敏捷开发之Scrum扫盲篇

    转载至 http www cnblogs com taven archive 2010 10 17 1853386 html 现在敏捷开发是越来越火了 人人都在谈敏捷 人人都在学习Scrum和XP 为了不落后他人 于是我也开始学习Scrum
  • kerberos 术语和认证流程介绍

    重要术语 1 KDC 全称 key distributed center 作用 整个安全认证过程的票据生成管理服务 其中包含两个服务 AS和TGS 2 AS 全称 authentication service 作用 为client生成TGT
  • 操作系统的文件结构

    文件的 逻辑结构 主要有 1 连续结构 2 多重结构 3 转置结构 4 顺序结构 文件的 物理存储 主要有 1 顺序结构 2 链接结构 3 索引结构 文件的 目录结构 主要有 1 一级目录结构 2 二级目录结构 3 树形结构 4 无环图
  • Springboot定时任务

    下文为 Scheduled的使用方法 1 简介 Scheduled支持三种部署方式 fixedRate fixedRateString 上一次执行开始后 n秒后再次执 fixedDelay fixedDelayString 上一次执行完毕后
  • 舵机的三条线分别代表什么

    橙色信号线 红色正极 棕褐色负极
  • @RequestParam和@PathVariable的用法与区别

    SpringBoot PathVariable URL变量 Web应用中的URL通常不是一成不变的 例如微博两个不同用户的个人主页对应两个不同的URL http weibo com user1和http weibo com user2 我们
  • 工厂(factory)模式

    转自 http www cnblogs com hegezhou hot archive 2010 11 30 1892227 html 一 开篇 一个多月没有写文章了 一方面是由于家庭的原因 还有一方面是因为工作上的原因 所以在这里给大家