1 创建型设计模式
抽象了实例化过程,类创建型模式使用继承改变被实例化的类,对象创建型模式将实例化委托给另一个对象。创建型模式将系统具体使用哪些类信息封装起来,隐藏了这些类是如何被创建和组合的,只知道抽象类所定义的接口。
1.1 简单工厂模式
不属于23种设计模式,它定义了一个工厂,根据参数的不同返回不同类的实例,这些实例通常拥有共同的父类。
用于创建实例的方法通常为static方法,故简单工厂模式又称为静态工厂方法。
三类角色:
工厂:负责实现创建所有产品的方法,可直接被外部调用。
抽象产品:所有产品的父类,声明了公共方法
具体产品:被创建实例的类,实现了抽象产品中的方法。
缺点:不遵循开闭原则
1.2 工厂方法模式(创建型类模式,其余创建型模式均为创建型对象模式)
意图:定义一个用于创建对象的接口,将具体实例化哪个实例延迟到其子类来决定。
结构:四类角色
抽象产品:声明产品的接口。
具体产品:实现产品的接口。
抽象工厂:声明工厂创建产品的接口。
具体工厂:实现产品创建接口,返回具体的产品实例。
适用性:
当一个类不知道他所必须创建的对象的类的类型的时候。
当一个类希望由他的子类决定创建的实例的类型的时候。
当类将创建对象的职责委托给多个帮助子类种的某个时,并且你希望其中哪个子类是代理者的时候。
1.3 抽象工厂模式
意图:提供一个创建一系列相关或相互依赖的对象的接口,而无需指定他们的类。
结构:
抽象产品:声明产品的接口,其中包含了该产品的一条产品线。
具体产品:产品线中具体的各产品类,实现产品的接口。
抽象工厂:声明工厂创建产品的接口。
具体工厂:实现一类产品的创建接口,返回具体的产品实例。
适用性:
一个系统要由多个产品系列中的一个来配置时。
当一个系统应该独立于他的产品的创建、构成和表示时。
与工厂方法模式的区分:一个具体工厂可创建多个产品则为抽象工厂。
1.4 生成器模式
意图:将一个复杂对象的构建与其表示分离,使得一种构建可以产生多种不同的表示。
结构:
Builder:声明构建产品的抽象接口。
ConcreteBuilder:实现产品的构建(创建该产品的内部表示,包括该产品由那些类组成)和装配(由哪些接口来将前述这些类组装成产品)的接口,并实现获取产品的接口。
Director:创建使用builder接口的对象。
适用性:
当创建复杂产品的算法应该独立与该对象的组成部分及装配部分时。
当构造过程必须允许构造对象有多个不同的表示时。
1.5 原型模式
意图:用原型实例指定创建对象的种类,并通过复制这些原型创建新对象。
结构:
Prototype:抽象原型,提供克隆接口。
concretePrototype:具体原型,实现具体的克隆方法。
client:调用原型的克隆。
适用性:
一个系统要独立于它产品的创建、构成和表示时。
当实例化的类是在运行时指定,如动态装载。
为了避免创建一个与产品类层次平行的工厂类时。
当一个类的实例只能有几个不同状态组合中的一种时,建立一个原型并在需要时克隆,可能比每次手动创建实例方便些。
1.6 单例模式
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
结构:

本文详细介绍了23种设计模式,包括创建型(如简单工厂、工厂方法、抽象工厂、生成器、原型和单例模式)、结构型(适配器、桥接、组合、装饰器、外观、享元和代理模式)和行为型(解释器、模板方法、责任链、命令、迭代器、中介者、备忘录、观察者、状态、策略和访问者模式)。设计模式提供了标准化的解决方案,以应对软件设计中常见的问题,提高代码的可读性和可维护性。
2万+

被折叠的 条评论
为什么被折叠?



