您的位置  > 互联网

工厂模式与工厂类分开的区别,你知道吗?

2.构造模式:将产品的内部表示与产品生成过程分离,使得一个构造过程生成具有不同内部表示的产品对象。 该构建模式允许自主改变产品内部外观,客户无需了解产品内部构成细节。 构建模式强制执行逐步构建过程。

3.工厂方法模式:核心工厂类不再负责所有产品的创建,而是将具体的创建工作留给子类,成为抽象工厂角色,只负责提供具体工厂类必须实现的接口,并且不触及应实例化哪个产品类的详细信息。

4、原始模型模式:通过给出原型对象来指定要创建的对象类型,然后通过复制原型对象来创建更多相同类型的对象。 原始模型模式允许动态添加或减少产品类别。 产品类别不需要具有任何预定的层次结构。 原始模型模式适用于任何层次结构。 缺点是每个类都必须配备clone方法。

5、单例模式:单例模式保证某个类只有一个实例,它实例化自己并将这个实例提供给整个系统。 仅当存在真正的“单实例”需求时才应使用单例模式。

6、适配器(变压器)模式:将一个类的接口转变为客户端期望的另一个接口,使原本因接口不匹配而无法协同工作的两个类可以协同工作。 适配类可以根据参数返回一个合适的实例给客户端。

7、桥接模式:将抽象和实现解耦,使两者可以独立变化,也就是说,它们之间的强关联变成弱关联,这意味着一个软件系统的抽象和实现之间使用组合/聚合关系它们不是继承关系,这样两者就可以独立改变。

8、复合模式:复合模式将对象组织成树形结构,可以用来描述整体与部分之间的关​​系。 组合模式是处理对象的树结构的模式。 综合模式采用树形结构来表达部分与整体之间的关系。 组合模式允许客户端将各个组件对象视为由它们组成的复合对象。

9、装饰模式:装饰模式以对客户端透明的方式扩展了对象的功能。 它是继承的替代方案,并提供比继承更多的灵活性。 动态地向对象添加函数,并且这些函数可以动态地撤消。 添加大量由一些基本功能的排列和组合产生的功能。

10、模式:与子系统的外部通信必须通过统一的对象进行。 模式提供了一个高级接口,使子系统更易于使用。 每个子系统只有一个外观类,并且这个外观类只有一个实例,这意味着它是一种单例模式。 但整个系统可以有多个外观类。

11、蝇量级模式:指拳击比赛中的最轻量级。 模式以共享的方式高效地支持大量细粒度对象。 共享享元模型的关键是区分内在状态和外在状态。 内在状态存储在享元内部,不会随着环境的变化而改变。 外部状态随着环境的变化而变化。 外在状态不能影响内在状态,它们是相互独立的。 区分普通类中可以共享的状态和不能共享的状态,并从类中删除不能共享的状态。 客户端不能直接创建共享对象,而应该使用工厂对象来创建共享对象。 享元模式大大减少了内存中对象的数量。

12、代理模式:代理模式为某个对象提供代理对象,代理对象控制对源对象的引用。 代理是指一个人或机构代表另一个人或机构行事。 在某些情况下,客户端不想或者不能直接引用某个对象,代理对象可以直接充当客户端和目标对象之间的中介。 客户端无法区分代理主题对象和真实主题对象。 代理模式并不知道真正的代理对象,而只持有代理对象的一个​​接口。 此时代理对象无法创建代理对象。 代理对象必须由系统中的其他角色创建并传入。

13. 责任链模型:在责任链模型中,许多对象通过每个对象对其下属族的引用来连接。

上升形成链条。 请求沿着链向上传递,直到链中的对象决定处理该请求为止。 客户端不知道链中的哪个对象最终处理请求,系统可以动态地重新组织链并分配职责,而不会影响客户端。 处理者有两种选择:接受责任或将其传递给下一方。 请求最终不能被任何接收对象接受。

14.命令模式:命令模式将请求或操作封装到对象中。 命令模式将发出命令的责任和执行命令的责任分开,并将它们委托给不同的对象。 命令模式允许请求方独立于发送方,这样请求方不需要知道接收请求方的接口,更不用知道请求是如何接收到的,以及是否、何时、如何操作被执行。 的。 系统支持命令的撤销。

15.解释器模式:给定一种语言,解释器模式可以定义其语法的表示,同时提供解释器。 客户可以使用该翻译器来解释该语言的句子。 解释器模式描述了如何在给定简单语法的情况下使用模式设计来解释这些语句。 解释器模式中提到的语言是指任何解释器对象可以解释的任何组合。 在解释器模式下,需要定义一个表示语法的命令类的层次结构,即一系列的组合规则。 每个命令对象都有一个解释方法,它代表命令对象的解释。 命令对象层次结构中对象的任何排列和组合都是一种语言。

16.迭代子模式:迭代子模式允许顺序访问集合中的元素,而不暴露集合的内部表示。 多个对象聚集在一起形成的聚合称为聚合。 聚合对象是可以包含一组对象的容器对象。 迭代子模式将迭代逻辑封装到一个单独的子对象中,与聚合本身分开。 迭代子模式简化了聚合接口。 每个聚合对象可以有一个或多个迭代器子对象,并且每个迭代器的迭代状态可以相互独立。 迭代算法可以独立于聚合角色而变化。

17. 中介者模式:中介者模式封装了一系列对象交互的方式,使得这些对象不必明显地相互交互。 这使得它们能够松散耦合。 当某些对象之间的交互发生变化时,不会立即影响其他对象之间的交互。 确保这些效果可以彼此独立地更改。 中介者模式将多对多交互转换为一对多交互。 中介者模式抽象了对象的行为和协作,并将对象的小规模行为与其他对象的交互分开处理。

18. 备忘录模式:备忘录对象是用于存储另一个对象内部状态快照的对象。 备忘录模式的目的是在不破坏封装性的情况下捕获、外化和存储对象的状态,以便该对象可以在将来的适当时间恢复到其存储的状态。

19、观察者模式:观察者模式定义了多组依赖关系,允许多个观察者对象同时监视某个主体对象。 当这个主题对象改变状态时,它会通知所有观察者对象,允许它们自动更新自己。

20.状态模式:状态模式允许对象在其内部状态改变时改变其行为。 该对象似乎已更改其类别。 状态模式将所研究的对象的行为包装在不同的状态对象中。 每个状态对象都属于抽象状态类的子类。 状态模式的目的是允许对象在其内部状态改变时改变其行为。 状态模式要求为系统可能获得的每个状态创建状态类的子类。 当系统的状态改变时,系统改变所选择的子类。

21、策略模式:策略模式针对一组算法,将每个算法封装成具有公共接口的独立类,以便它们可以相互替换。 策略模式允许算法改变而不影响客户端。 策略模式将行为与环境分开。 环境类负责维护和查询行为类,具体策略类中提供了各种算法。 由于算法和环境是独立的,算法的增删改查不会影响环境和客户端。

22、模板方法模式:模板方法模式准备一个抽象类,以具体方法和具体构造函数的形式实现部分逻辑,然后声明一些抽象方法强制子类实现剩余的逻辑。 不同的子类可以以不同的方式实现这些抽象方法,从而对其余逻辑有不同的实现。 先开发一个顶层逻辑框架,把逻辑的细节留给具体的子类。

23. 访问者模式:访问者模式的目的是封装一些应用于某些数据结构元素的操作。 一旦需要修改这些操作,接受该操作的数据结构可以保持不变。 访问者模式适用于数据结构相对不确定的系统。 它解耦了数据结构和作用于该结构的操作之间的耦合,允许操作集相对自由地演化。 访问者模式可以通过添加新的访问者类轻松添加新操作。 访问者模式将相关行为集中到访问者对象中,而不是将它们分散到节点类中。 使用 模式时,将尽可能多的对象浏览逻辑放置在 类中而不是其子类中。 访问者模式可以跨多个类层次结构访问属于不同层次结构的成员类。