23种设计模式简介
一、创建型(5种)
1. 工厂方法模式(Factory Method)
定义:定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化延迟到子类进行。
适用场景:需要灵活扩展对象创建逻辑;希望将对象创建与使用解耦。
优点:降低客户端与具体产品的耦合度;符合开闭原则。
缺点:新增产品类型需要修改工厂类层次结构。
总店定义制作流程,分店各自实现特色披萨(北京店-烤鸭披萨,上海店-蟹粉披萨)
2. 抽象工厂模式(Abstract Factory)
定义:提供一个创建一系列相关或依赖对象的接口,而无需指定它们具体的类。
适用场景:需要创建多个相关产品族;系统独立于产品的具体实现。
优点:保证产品族一致性;隔离具体产品实现。
缺点:扩展新产品族困难;增加系统复杂度。
套餐工厂(家庭装含大披萨+薯条,情侣装含双拼披萨+红酒)
定义:提供一个创建一系列相关或依赖对象的接口,而无需指定它们具体的类。
适用场景:需要创建多个相关产品族;系统独立于产品的具体实现。
优点:保证产品族一致性;隔离具体产品实现。
缺点:扩展新产品族困难;增加系统复杂度。
3. 建造者模式(Builder)
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用场景:对象构造复杂且有多个步骤;需要不同配置组合。
优点:分离构建与表示;便于扩展新配置。
缺点:产品必须有相似构造步骤。
定制披萨分步构造(选饼底→加料→选酱→烘烤时间)
4.原型模式(Prototype)
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
适用场景:对象创建成本高;需要快速复制对象。
优点:高效创建复杂对象;简化实例化过程。
缺点:对值类型属性的深拷贝处理复杂。
复制畅销款披萨配方(深克隆包含所有配料比例)
5. 单例模式(Singleton)
定义:保证一个类仅有一个实例,并提供一个全局访问点。
适用场景:需要全局唯一实例;资源共享场景。
优点:控制实例数量;节省系统资源。
缺点:违反单一职责原则;测试困难。
全店唯一的烤箱温度控制器
// 单例模式,确保一个类只