-
对象创建型:1.原型模式;2.工厂模式;3.抽象工厂模式;4.单例模式;5.生成器
-
接口适配型:1.适配器模式;2.桥接模式;3.外观模式
-
对象去耦型:1.中介者模式;2.观察者模式
-
抽象集合型:1.组合模式;2.迭代器模式
-
行为扩展型:1.访问者模式;2.装饰器模式;3.责任链模式
-
算法封装型:1.模版方法模式;2.策略模式;3.命令模式
-
性能与对象访问型:1.享元模式;2.代理模式
-
对象状态型:1.备忘录模式
是不是也觉得很多记不住啦?没关系啦!其实对于这些设计模式,还有一个简单的分类,就是按照使用目的划分为的三类:
-
对象创建型(creational):主要用于处理对象的创建,实例化对象
-
结构处理型(structural):处理类或对象间的组合
-
行为描述型(behavioral):描述类或对象怎样进行交互和职责分配
其中:
-
对象创建型包括:工厂方法模式、抽象工厂模式、单例模式、生成器模式、原型模式
-
结构处理型包括:装饰器模式、适配器模式
-
行为描述型包括:观察者模式
按照分类只记住这几种就会简单一些。其实每一种设计模式都有属于它的特点和应用场景,经过反复的练习,掌握每一种设计模式的定义和应用场景,应对简单的面试还是没有问题的。最重要的就是之后合理使用其来开发项目,应用到实战中,彻彻底底的秀面试官一脸!
接下来就来和大家介绍一下这21种设计模式的基本定义和适用场景,记住这个对于之后熟练使用设计模式是很有帮助的!
1、原型(Prototype)模式
=====================
**定义:**原型(Prototype)模式用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
适用场景:
-
当一个系统应该独立于它的产品创建、构成和表示时;
-
当要实例化的类是在运行时刻指定时,例如,通过动态装载;
-
为了避免创建一个与产品类层次平行的工厂类层次时;
-
当一个类的实例只能有几个不同状态组合中的一种时,建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
2、工厂方法(Factory Method)模式
============================
**定义:**工厂方法(Factory Method)模式定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使一个类的实例化延迟到其子类。
适用场景:
-
当一个类不知道它所必须创建的对象的类的时候;
-
当一个类希望由它的子类来指定它所创建的对象的时候;
-
当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
3、抽象工厂(AbstractFactory) 模式
==============================
**定义:**抽象工厂(AbstractFactory) 模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
适用场景:
-
一个系统要独立于它的产品的创建、组合和表示时;
-
一个系统要由多个产品系列中的一-个来配置时;