设计模式概括认知

简介: 设计模式概括认知

网络真的很强大,重新回头看这些东西,发现不再那么晦涩难懂,这里做简单整理。

总体来说设计模式分为三大类:

创建型模式,

共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

工厂模式(Factory Pattern): 定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

抽象工厂模式(Abstract Factory Pattern): 围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。

单例模式(Singleton Pattern): 保证一个类仅有一个实例,并提供一个访问它的全局访问点。

建造者模式(Builder Pattern): 多个简单的对象一步一步构建成一个复杂的对象。如:肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的“套餐”;

原型模式(Prototype Pattern): 创建重复的对象,同时又能保证性能,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。

结构型模式,

共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式

适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另外一个接口,两个不兼容的接口之间的桥梁。(改变目标对象的接口了)

装饰器模式(Decorator Pattern):动态地给一个对象添加一些额外的职责。如:将一个形状装饰上不同的颜色,同时又不改变形状。(增强原对象功能)

代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。 (不能改变对象接口)

外观模式(Facade Pattern):为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 (把某些接口统一在一起,用一个接口调)

桥接模式/接口模式(Bridge Pattern):将抽象部分与实现部分分离,使它们都可以独立的变化。 提供桥接的接口,使两者可以独立变化却互不影响(可以与继承配合,实现各种不同的组合)

过滤器模式(Filter、Criteria Pattern):这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来

组合模式(Composite Pattern):将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

享元模式(Flyweight Pattern):用于减少创建对象的数量,以减少内存占用和提高性能。尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。 如数据库里的数据池

行为型模式,

共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

策略模式(Strategy Pattern):定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法。如:旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。

模板模式(Template Pattern):一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。

观察者模式(Observer Pattern):当对象间存在一对多关系时,则使用观察者模式(ObserverPattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。

迭代器模式(Iterator Pattern):提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。

责任链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

命令模式(Command Pattern):种数据驱动的设计模式。请求以命令的形式包裹在对象中,将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。

备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

状态模式(State Pattern):创建表示各种状态的对象和一个行为随着状态对象改变而改变的context对象。

访问者模式(Visitor Pattern):主要将数据结构与数据操作分离。使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。 (稳定的数据结构和易变的操作耦合问题。)

中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

解释器模式(Interpreter Pattern):给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。 (用在SQL解析、符号处理引擎等)

空对象模式(Null Object Pattern):在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。

目录
相关文章
|
10月前
|
设计模式 算法
设计模式一句话概括
设计模式一句话概括
41 0
|
6天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
24 0
|
6天前
|
设计模式 开发者
探讨常见设计模式 - 工厂方法模式的最佳实践和潜在的实施问题
【4月更文挑战第7天】工厂方法模式是创建型设计模式,提供了一种在不指定具体类情况下创建对象的方式。它定义创建对象的接口,允许子类决定实例化哪个类,从而解耦对象的创建和使用。最佳实践包括明确接口、封装创建逻辑、提供扩展点和避免过度使用。然而,过度工程、违反开闭原则、性能影响和依赖管理是可能的问题。通过权衡利弊并遵循最佳实践,工厂方法模式能在适当场景下提升代码灵活性和可扩展性。
|
6天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式
|
6天前
|
设计模式 Java PHP
php设计模式--简单工厂模式(一)
php设计模式--简单工厂模式(一)
16 0
|
6天前
|
设计模式 API
【设计模式】适配器和桥接器模式有什么区别
【设计模式】适配器和桥接器模式有什么区别
10 1
|
6天前
|
设计模式
【设计模式】张一鸣笔记:责任链接模式怎么用?
【设计模式】张一鸣笔记:责任链接模式怎么用?
11 1
|
6天前
|
设计模式 uml
【设计模式】建造者模式就是游戏模式吗?
【设计模式】建造者模式就是游戏模式吗?
11 0
|
6天前
|
设计模式 Java uml
【设计模式】什么是工厂方法模式?
【设计模式】什么是工厂方法模式?
8 1
|
6天前
|
设计模式 uml
【设计模式】一文搞定简单工厂模式!
【设计模式】一文搞定简单工厂模式!
8 2