通俗易懂:面向对象软件开发的23种设计模式之创建型模式大家好,我是千载,欢迎来到千载茶水间!今天我们来聊一聊面向对象软件开发的23种设计模式。众所周知,这23种设计模式分为创建型模式,共5种;结构型模式,共7种;行为型模式,共11种。这篇文章我们主要说一说其中的5种创建型模式,其余两种放到后续两篇单独的文章中进行介绍。一、创建型模式(5种)创建型模式主要解决如何创建对象的问题。1.单例模式单例模式就是保证一个类在整个程序生命周期中仅有一个实例对象,并且提供一个全局唯一访问该实例的静态方法。把它翻译成你能听懂的人话是这样的:你可以把整个应用程序上下文类比成一个班级。把班主任类比为单例实例。学校规定了,一个班只能配置唯一一位班主任,不能同时有两个班主任管同一个班。无论是谁,如果想要找班主任,都只能通过固定的途径去找这同一个人,不能各自重新任命新班主任。这么一类比,是不是瞬间清晰多了。2.工厂方法模式工厂方法的核心思想就是:把产品的创建逻辑延迟到具体子类工厂中实现,父工厂只定义创建产品的抽象接口,不负责实例化对象。即定义一个创建对象的接口,让子类决定实例化哪个类。你可以想象成,你开了一家超市,比如要进货牛奶和面包:你要求所有供货商都必须负责送货上门。这个时候工厂不搞万能工厂,不包揽所有东西的生产,而是每一种商品单独配一个专属的小工厂,总工厂只定规矩,不亲手造货。牛奶专属工厂,只负责生产和配送牛奶。面包专属工厂,只负责生产和配送面包。这样是不是思路就清晰多了。3.抽象工厂模式抽象工厂模式,就是创建一系列相关或相互依赖的对象,无需指定具体类。它的核心思想就是:一个工厂可以一次性生产一套配套的、关联的多个产品,专门用来做产品家族。抽象工厂模式和上边的工厂方法模式比较一下,还是有所不同的:工厂方法模式中一个工厂只生产单个零件,就是只生产单一产品。而抽象工厂中,一个工厂一次性生产一整套配套零件,就是生产一个配套的产品家族。比如一个手机工厂,必须能同时造手机和充电器,两个都得有。当客户想要一整套小米设备时,直接找小米整套工厂,手机、充电器一次性全部拿到,不用分别找两个单独的工厂了。这样能够保证配件之间兼容适配,不会混搭出错。一个字:清晰!4.建造者模式建造者模式的核心就是:分布组装复杂大件产品,把建造步骤和最终成品拆开,同一套组装流程能造出不同款式的成品。啥意思?你可以理解为把复杂对象的构建与表示分离,一步步构建,就像盖房子一样。还是看不懂?那还是用一个通俗的场景来类比一下吧。可以想象一下我们实际生活中的盖房子,尤其是那种自建房。盖房子的流程固定不变,通常都是这几步:打地基、砌墙体、架屋顶、装门窗、内部装修。但是用料、装修档次不一样,那建造出来的房子就不一样。核心是把施工步骤和具体用料分开管理。如果客户想要刚需小户型房子,那么工头就会调用刚需房施工队,用细钢筋、红砖、普通瓦片、塑钢窗、简约硬装的方式,建成普通居民房。如果客户想要独栋别墅,那么工头则更换施工队,用高强度钢筋、保温墙砖、琉璃顶、落地窗、豪华精装的方式,建成别墅。这下明白了吧。5.原型模式原型模式,就是通过复制现有对象来创建新对象,避免重新创建。它的核心思想就是:不用从头新建一个对象,拿现成完整对象当模板,直接拷贝复制一份新的。一头雾水,听不懂啊!没关系,我来用一个生活中的场景类比一下,你就明白了。假如你要去办理多个业务,每个业务都需要你的身份证复印件:这个时候你的身份证原件就好比是原型对象。这个时候你只需要用复印机直接扫描原件,一键复制出来多张一模一样的复印件即可。非常好理解。我们来总结一下:创建型模式,它的核心目标就一件事:把【对象怎么创建出来】和【对象创建好之后怎么使用】彻底分开。就是不让业务代码到处胡乱new对象,把造对象这件事单独打包管理起来。今天就到这里,下期文章再见!欢迎常来千载茶水间,我们聊一聊。