发布网友 发布时间:2023-09-16 11:58
共1个回答
热心网友 时间:2024-03-11 18:32
23种设计模式知识要点分别是工厂方法,抽象工厂,单例,建造者,原型,适配器,桥接,装饰器,组合,外观,享元,代理,模板方法,策略,命令,责任链,中介者,观察者,备忘录,迭代器,访问者,状态,解释器模式。
设计模式是指在软件开发中常用的解决问题的代码结构的总结和抽象。在代码开发中采用设计模式可以提高软件的可维护性。可拓展性和代码复用性。下面简单地回顾下23种设计模式的概念以及其应用场景:
1、工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪个类。应用场景:可以避免与具体对象类型的绑定关系,可以创建多种不同对象,易于扩展。
2、抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。应用场景:可以创建多个产品族的对象,在一定程度上提高了系统的灵活性和可扩展性。
3、单例模式:确保类只有一个实例,并提供一个全局访问点。应用场景:在需要实现系统中唯一对象时使用,如线程池。缓存。日志对象等。
4、建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。应用场景:需要通过多个步骤来构建一个复杂的对象时使用。
5、原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。应用场景:需要创建多个相同对象时使用,可以避免重复的初始化操作。
6、适配器模式:将一个类的接口转换成客户希望的另一个接口。应用场景:当两个类接口不兼容时使用,可以让它们协同工作。
7、桥接模式:将抽象部分与实现部分分离,使它们可以独立变化。应用场景:通过将变化的抽象部分与实现部分分离,可以提高系统的灵活性和可维护性。
8、装饰器模式:动态地将责任附加到对象上,扩展功能。应用场景:在不改变对象接口的前提下,动态地给对象增加功能时使用。
9、组合模式:将对象组合成树形结构以表示“部分-整体”的结构关系,允许用户以相同的方式处理单个对象和组合对象。应用场景:当需要把整体与部分的关系表示出来时使用。
10、外观模式:为子系统中的一组接口提供一个统一的接口。应用场景:当需要简化接口或减少客户端与系统的交互时使用,可以提高系统的灵活性和可扩展性。
11、享元模式:运用共享技术有效地支持大量细粒度的对象。应用场景:当需要创建大量对象,且这些对象的许多属性相同时使用,可以减少内存的使用。
12、代理模式:为其他对象提供一种代理以控制对这个对象的访问。应用场景:当需要控制对象的访问权限或对象不易直接访问时使用。
13、模板方法模式:定义一个算法的骨架,将一些步骤延迟到子类中实现。应用场景:当需要在不改变算法结构的情况下修改算法的某些步骤时使用。
14、策略模式:定义一系列算法,将每个算法都封装起来,并让它们之间可以互换。应用场景:当需要动态地改变对象的行为时使用,可以提供灵活的设计。
15、命令模式:将请求封装成对象,以便使用不同的请求。队列或者日志来参数化其他对象。应用场景:当需要将请求发送者和请求接收者解耦时使用,可以提高系统的灵活性。
16、责任链模式:将多个对象连成一条责任链,并沿着这条链传递请求,直到有一个对象处理它为止。应用场景:当需要避免请求发送者与接收者之间的耦合时使用,可以提高系统的灵活性。
17、中介者模式:用一个中介对象封装一系列的对象交互,使得每个对象都不需要显式地知道其他对象。应用场景:当需要解耦对象之间的关系时使用,可以简化对象之间的交互。
18、观察者模式:定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。应用场景:当对象之间存在关联关系,一个对象的状态发生改变会影响到其他对象时使用。
19、备忘录模式:在不破坏封装的前提下,捕获并存储对象的内部状态,以便稍后可以将该对象恢复到原先的状态。应用场景:当需要实现撤销操作时使用,可以保存某个对象的历史状态。
20、迭代器模式:提供一种顺序访问复合对象内各元素的方法,而又不需要暴露该对象的内部表示。应用场景:当需要按顺序访问复杂对象内部的各个元素时使用,可以提供灵活和安全的访问方式。
21、访问者模式:表示一个作用于某对象结构中各元素的操作,可以在不改变各个元素的情况下定义作用于这些元素的新操作。应用场景:当需要对复杂对象结构中的各个元素进行某些特定的操作时使用。
22、状态模式:允许一个对象在其内部状态改变时改变其行为。应用场景:当需要根据对象的内部状态改变其行为时使用,可以提高系统的灵活性和可扩展性。
23、解释器模式:给定一个语言定义,定义出其文法的一种表示,并定义一个解释器,使用该解释器来解释这个语言中的句子。应用场景:当需要解释和执行一些特定的语法时使用。