首页 > 其他分享 >常见设计模式

常见设计模式

时间:2024-09-12 09:15:50浏览次数:9  
标签:__ 对象 self 常见 模式 设计模式 class def

设计模式是一种在软件开发中常用的解决特定问题的通用方法。它们提供了一种标准化的方式来构建和组织代码,提高代码的可重用性和可维护性。以下是一些常见的设计模式,通常可以分为三大类:创建型、结构型和行为型。

1. 创建型模式

这些模式主要关注对象的创建过程。

  • 单例模式(Singleton)
    确保一个类只有一个实例,并提供一个全局访问点。适用于需要控制资源访问的场景,如配置管理。

    class Singleton:
        _instance = None
    
        def __new__(cls):
            if cls._instance is None:
                cls._instance = super(Singleton, cls).__new__(cls)
            return cls._instance
    
  • 工厂模式(Factory)
    定义一个接口用于创建对象,但由子类决定要实例化的类。常用于需要动态选择某种类型对象的情况。

    class Shape:
        def draw(self):
            pass
    
    class Circle(Shape):
        def draw(self):
            print("Draw a Circle")
    
    class ShapeFactory:
        @staticmethod
        def get_shape(shape_type):
            if shape_type == "Circle":
                return Circle()
    
  • 抽象工厂模式(Abstract Factory)
    提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。

2. 结构型模式

这些模式主要关注对象之间的组合。

  • 适配器模式(Adapter)
    将一个类的接口转换为客户端所期望的另一个接口。适用于需要使用现有类而其接口不兼容的情况。

    class Adaptee:
        def specific_request(self):
            return "Specific Request"
    
    class Adapter:
        def __init__(self, adaptee):
            self.adaptee = adaptee
    
        def request(self):
            return self.adaptee.specific_request()
    
  • 装饰者模式(Decorator)
    动态地给一个对象添加一些额外的职责。适用于需要扩展类功能的情况。

    class Coffee:
        def cost(self):
            return 5
    
    class MilkDecorator:
        def __init__(self, coffee):
            self.coffee = coffee
    
        def cost(self):
            return self.coffee.cost() + 1
    
  • 组合模式(Composite)
    将对象组合成树形结构以表示“部分-整体”层次结构。客户对单个对象和组合对象的使用保持一致。

3. 行为型模式

这些模式主要关注对象之间的通信。

  • 观察者模式(Observer)
    定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时,所有依赖于它的观察者都会收到通知。

    class Subject:
        def __init__(self):
            self.observers = []
    
        def attach(self, observer):
            self.observers.append(observer)
    
        def notify(self):
            for observer in self.observers:
                observer.update()
    
  • 策略模式(Strategy)
    定义一系列算法,将每一个算法封装起来,并使它们可以互换。适用于需要在运行时选择算法的情况。

    class Strategy:
        def execute(self):
            pass
    
    class ConcreteStrategyA(Strategy):
        def execute(self):
            print("Strategy A")
    
    class Context:
        def __init__(self, strategy):
            self.strategy = strategy
    
        def execute_strategy(self):
            self.strategy.execute()
    
  • 命令模式(Command)
    将请求封装为对象,以便使用不同的请求、队列或日志请求,以及支持可撤销操作。

总结

设计模式在软件开发中具有重要意义,它们提供了可重用的解决方案,帮助开发者解决常见问题。尽管学习和应用设计模式可能需要一定的时间和经验,但掌握它们将显著提升代码的质量和可维护性。

标签:__,对象,self,常见,模式,设计模式,class,def
From: https://www.cnblogs.com/love-DanDan/p/18409509

相关文章

  • 技术成神之路:设计模式(十三)访问者模式
    介绍访问者模式(VisitorPattern)是一种行为型设计模式,它允许你在不改变对象结构的前提下,定义作用于这些对象的新操作。这种模式通过将操作逻辑从对象结构中抽离出来,使得新的操作可以无缝地添加到现有对象中。1.定义访问者模式定义了一个访问者接口,它包含了访问不同元素的操作方法。......
  • 适配器设计模式
    设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解解、保证代码可靠性、程序的重用性。简单理解:设计模式就是各种套路。适配器设计模式:解决接口与接口实现类之间的矛盾问题如......
  • C#设计模式
    C#设计模式入门实战教程 什么是设计模式设计模式是对面向对象设计中反复出现的问题的解决方案。它们提供了被反复使用、多数人知晓的、经过分类编目的代码设计经验总结。设计模式的作用提高代码的可重用性:通过定义一套标准的解决方案,设计模式使得相同或类似的问题可以在......
  • Python有哪些常见的、好用的爬虫框架?
    Python有非常多的爬虫框架,主要分为三大类。一种是请求库,比如requests、urllib、httpx等,负责向目标网站发送HTTP请求并获取响应数据。Scrapy也属于这个大类,不过Scrapy功能更加完善,可以提供异步网络请求、高效的数据提取与灵活的扩展性,适用于构建复杂和大规模的网页爬虫应用。......
  • 【Node.js】常见命令
    原创新生代码农新生代码农Node.js是一种流行的JavaScript运行时环境,用于构建高性能的网络应用程序。在日常开发中,掌握一些常用的Node.js命令可以提高开发效率和便捷性。让我们一起来探索一些常见的Node.js命令。nodenode命令用于执行JavaScript文件,是Node.js的主要命令......
  • 【C++】vector常见用法
    ......
  • POI常见包名称含义,常见HSSF,SXXF,SXSSF区别
    Java单元格合并后边框消失了在使用Java编写Excel文件时,经常会遇到合并单元格的需求。单元格合并可以使表格更加美观,同时减少重复的内容。然而,有时候在合并单元格后会发现边框消失了,这给我们带来了困惑。本文将介绍这个问题的原因以及解决方法,并提供相应的代码示例。问题描述当我......
  • MySQL常见面试题
    使⽤索引⼀定可以提升效率吗?索引就是排好序的,帮助我们进⾏快速查找的数据结构.简单来讲,索引就是⼀种将数据库中的记录按照特殊形式存储的数据结构。通过索引,能够显著地提⾼数据查询的效率,从⽽提升服务器的性能。索引的优势与劣势优点提⾼数据检索的效率,降低数据库的IO成本......
  • 前端常见算法题
    1、去除字符串中出现次数最少的字符,不改变原字符串的顺序实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。“ababac”——“ababa”“aaabbbcceeff”——“aaa......
  • 测试工具Fiddler(三)—— 常见功能介绍
    Fiddler的功能面板1、statistics:请求的性能指标;全世界范围的性能测试;RTP:一个请求的从发送出去到返回的时间;Showchart可以看出图表的示例;2、inspectors:对请求解包:header:请求头信息。UA,cookie,发送请求来源。textView:可以看到返回的数据;imageview:可以看到返回......