常用的设计模式之二(行为型模式)

Python常用设计模式—行为型模式 文章目录一、责任链模式二、观察者模式三、策略模式四、模板方法模式 一、责任链模式 责任链模式的内容:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链并沿着这条链传递该请求,直到有一个对象处理它为止。责任链的角色有抽象处理者、具体处理者和客户端。 from abc import ABCMeta, abstractmethod # 抽象的处理者 class Handler(metaclass=ABCMeta): @abstractmethod de 阅读详情

观察者模式

观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有观察者都会收到通知并进行相应的处理。

观察者模式包含以下几个角色:

  • 抽象主题(Subject):定义了被观察的对象接口,它可以增加和删除观察者对象,以及通知观察者对象。
  • 具体主题(ConcreteSubject):实现了抽象主题接口,它具有添加、删除观察者对象的功能。通常是被观察的对象。
  • 抽象观察者(Observer):定义了观察者接口,它具有更新数据的方法,当接收到主题通知时被调用。
  • 具体观察者(ConcreteObserver):实现了观察者接口,它保存一个指向具体主题对象的引用,实现了更新数据的方法,以便自身状态与主题状态协调。

观察者模式的核心思想是:当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。这种模式的优点是将观察者和被观察者解耦,使得程序的扩展性和复用性更加容易,可以动态地添加和删除观察者,从而避免了代码的臃肿和复杂性。

观察者模式在实际应用中非常常见,例如在图形界面开发中,窗口、按钮等组件就可以作为被观察者,而事件监听器就可以作为观察者。此外,观察者模式还可以用于日志记录、消息队列等领域。

下面是一个C++实现的简单观察者模式案例:

#include <iostream>
#include <vector>

using namespace std;

// 抽象主题类
class Subject {
public:
    virtual void attach(class Observer* observer) = 0;
    virtual void detach(class Observer* observer) = 0;
    virtual void notify() = 0;
};

// 具体主题类
class ConcreteSubject : public Subject {
public:
    void attach(Observer* observer) override {
        observers.push_back(observer);
    }

    void detach(Observer* observer) override {
        for (auto it = observers.begin(); it != observers.end(); ++it) {
            if (*it == observer) {
                observers.erase(it);
                break;
            }
        }
    }

    void notify() override {
        for (auto observer : observers) {
            observer->update();
        }
    }

    void setState(int state) {
        this->state = state;
        notify();
    }

    int getState() const {
        return state;
    }

private:
    vector<Observer*> observers;
    int state;
};

// 抽象观察者类
class Observer {
public:
    virtual void update() = 0;
};

// 具体观察者类
class ConcreteObserver : public Observer {
public:
    ConcreteObserver(ConcreteSubject* subject) : subject(subject) {
        subject->attach(this);
    }

    ~ConcreteObserver() override {
        subject->detach(this);
    }

    void update() override {
        cout << "Observer received notification: " << subject->getState() << endl;
    }

private:
    ConcreteSubject* subject;
};

int main() {
    ConcreteSubject subject;

    // 添加两个观察者
    ConcreteObserver observer1(&subject);
    ConcreteObserver observer2(&subject);

    // 改变主题状态,触发通知
    subject.setState(1);

    // 移除一个观察者
    subject.detach(&observer2);

    // 再次改变主题状态,触发通知
    subject.setState(2);

    return 0;
}

这个示例中,Subject 定义了主题类的接口,包括添加、删除观察者和通知观察者的方法, ConcreteSubject 继承了 Subject,并实现了具体的主题类,其中 setState 方法改变主题的状态,并调用 notify 方法通知所有观察者;Observer 定义了观察者类的接口,包括更新数据的方法; ConcreteObserver 继承了 Observer,并实现了具体的观察者类,它保存了一个指ConcreteSubject 的引用,当 ConcreteSubject 的状态发生改变时,会自动更新。

在 main 函数中,我们创建了一个 ConcreteSubject 对象,并添加了两个观察者,然后改变主题状态,触发通知。接着,我们移除了一个观察者,并再次改变主题状态,验证只有一个观察者收到了通知。

模板模式

模板模式(Template Pattern)是一种行为设计模式,它定义了一个算法的骨架,而将某些步骤延迟到子类中实现。模板模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

模板模式的核心思想是定义一个抽象基类,其中包含了一些算法的共性,以及一些抽象方法,这些抽象方法会在具体子类中实现。然后定义一个模板方法,其中包含了一个算法的骨架,它通过调用基类中的方法来实现算法的各个步骤。具体子类可以通过重写基类中的抽象方法来实现算法的个性化定制。

以下是一个简单的 C++ 实现示例:

#include <iostream>

using namespace std;

// 抽象类
class AbstractClass {
public:
    virtual void primitiveOperation1() = 0;
    virtual void primitiveOperation2() = 0;

    void templateMethod() {
        primitiveOperation1();
        primitiveOperation2();
    }
};

// 具体类A
class ConcreteClassA : public AbstractClass {
public:
    void primitiveOperation1() override {
        cout << "ConcreteClassA::primitiveOperation1()" << endl;
    }

    void primitiveOperation2() override {
        cout << "ConcreteClassA::primitiveOperation2()" << endl;
    }
};

// 具体类B
class ConcreteClassB : public AbstractClass {
public:
    void primitiveOperation1() override {
        cout << "ConcreteClassB::primitiveOperation1()" << endl;
    }

    void primitiveOperation2() override {
        cout << "ConcreteClassB::primitiveOperation2()" << endl;
    }
};

int main() {
    AbstractClass* a = new ConcreteClassA;
    a->templateMethod();

    AbstractClass* b = new ConcreteClassB;
    b->templateMethod();

    return 0;
}

在这个示例中,AbstractClass 是抽象基类,其中包含了一个模板方法 templateMethod,它通过调用两个抽象方法 primitiveOperation1 和 primitiveOperation2 实现算法的骨架。ConcreteClassA 和 ConcreteClassB 继承自 AbstractClass,并分别实现了自己的具体算法,即实现 primitiveOperation1 和 primitiveOperation2。

在 main 函数中,我们先创建了一个 ConcreteClassA 对象,并调用了其 templateMethod 方法,它的具体算法是先执行 primitiveOperation1,然后执行 primitiveOperation2。接着,我们创建了一个 ConcreteClassB 对象,同样调用了其 templateMethod 方法,其具体算法和 ConcreteClassA 有所不同。

模板模式的优点在于它使得算法的框架和具体实现分离,降低了实现算法的难度和维护成本,并且可以在不改变算法结构的情况下,方便地扩展和修改算法的具体实现。模板模式还可以提高代码的复用性,避免了代码重复。

模板模式的缺点在于它需要定义抽象类和具体类,这样就增加了代码的复杂度和阅读难度。此外,模板模式还可能导致类的层次结构变得更加复杂,需要进行仔细的设计。

总的来说,模板模式适用于需要实现一些具体算法,但是算法中的某些步骤可能存在差异,需要在子类中进行定制的情况。它可以让代码更加简洁,易于维护,同时提高代码的复用性和扩展性。

设计模式大杂烩(24种设计模式的总结以及学习设计模式的几点建议) 作者:zuoxiaolong8810(左潇龙),转载请注明出处。                 迄今为止,LZ已经将24种设计模式介绍完了,其中包括GOF23种设计模式以及简单工厂模式,这些设计模式之间并不是完全独立的,而是互相之间,会有一些相同的影子,下面LZ分几个方式去对比和总结下这些设计模式。 类型分类: 1、创建型设计模式: 阅读详情

相关推荐

基于74LS175的四人抢答电路设计(含详细设计分析及试错过程)

根据设计要求不难发现,只要有一人抢答,就会输出信号使指示灯常亮,此时其他人输入无效,适宜选择触发器,有人抢答时触发器输出由0变1,输出信号控制指示灯常亮,同时使CLR引脚输入0,触发器不工作,即其他选手不能再抢答。尝试加入一人抢答后其他人不可抢答功能,如下图,175四个~Q输出端接入同一个与非门,于是当有选手抢答时该与非门输出由0变1,将该信号输入U5A,U5A输出由1变0,接入~CLR即可使电路不再工作。但仿真时发现,该复位键仅可使抢答电路部分复位,计数部分只是暂停,并未复位。否则元器件将无法正常工作。

2202_75463653的博客 8188

c++设计模式

*你可以深入介绍几个面试中经常提到的设计模式,解释它们的作用、实现方法,并提供简单的示例代码。以下是几个常见的设计模式:3.1 单例模式(Singleton)概念: 确保一个类只有一个实例,并提供全局访问点。回答: “单例模式用于确保一个类在程序中只有一个实例,并且提供一个全局访问点来获取这个实例。它通常用于管理资源(如数据库连接、配置文件)。private:public:// 初始化静态成员3.2 工厂方法模式(Factory Method)

qq_45395160的博客 2015

2025趋势:经济学研究中AI多智能体系统的6大架构方向(AI应用架构师必藏)

多智能体系统(MAS)由多个相互作用的智能体组成,每个智能体具备自主决策能力、感知环境的能力和与其他智能体通信的能力。微观行为的精细化建模:智能体可被赋予异质的偏好函数、信息集和决策规则,模拟真实市场的多样性动态交互的涌现性分析:通过智能体间的局部互动(如交易、合作、竞争),观察宏观经济现象的涌现过程反事实政策实验:在虚拟环境中安全测试极端政策(如负利率、全民基本收入)的连锁反应实时自适应调整:智能体可通过机器学习持续优化策略,模拟经济系统的演化特性。

AI 领航者的博客 1424

观察者模式(Observer Pattern)是一种常用的设计模式,属于行为型模式

- **主题(Subject)**:也称为被观察者。它是一个接口,用来注册和移除观察者对象,并且在状态改变时通知所有观察者。 - **具体主题(ConcreteSubject)**:实现了主题接口,维护了一个内部状态,并且在状态改变时通知所有注册的观察者。 - **观察者(Observer)**:一个接口,定义了一个更新接口,用于接收主题的通知。 - **具体观察者(ConcreteObserver)**:实现了观察者接口,存储了一个指向具体主题的引用,并且在收到通知时更新自己的状态。

[Blog][Domain] programb.blog.youkuaiyun.com 1344

基于STM32与HRTIM的四开关Buck-Boost双向DC-DC电源设计实战(附源码、仿真与设计解析)

本文详细介绍了基于STM32F334的HRTIM高分辨率定时器实现四开关Buck-Boost双向DC-DC电源的设计实战。通过精准的PWM控制、双环PID算法和智能模式切换逻辑,解决了电压震荡与效率优化等关键问题,并提供了完整的源码、PSIM仿真及参数计算,为高性能电源设计提供了实用参考。

7z8x2c4v6b9的博客 295

内核工作FAST‘25 Artifact Evaluation流程记录

在我们的paper中,复现需要用到傲腾持久化内存,因此,需要AE Reviewer访问到内网服务器中。我们的思路是购买云服务器,将其作为跳板机,内网服务器通过SSH反向代理与公网服务器建立隧道,AE Reviewer通过隧道访问内网服务器。我们在AE过程中使用。然后,把一切复现需要的代码环境,在chroot里面配置完成。

不定期更新系统使用、编程小技巧,哔哩哔哩账号:https://space.bilibili.com/399455629,欢迎关注 1215

常用23种设计模式及其分类(创建型模式、结构型模式、行为型设计模式)

设计模式 设计模式是一套被反复使用、经过分类编目的代码设计经验的总结。使用设计模式是为了复用成功的设计和体系结构、复用相似 问题的相同解决方案,保证代码可靠性,使代码编制真正工程化,能够适应需求的变化。 23 种设计模式,描述如下: 1.抽象工厂(Abstract Factory)。提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 2.工厂方法(F...

小喵的博客 1573

在VM虚拟机的MobaXterm下安装JDK17

本文介绍了在Linux系统下安装配置JDK17的完整步骤:1)从Oracle或OpenJDK官网下载Linux版JDK17压缩包;2)上传至/usr/local目录;3)解压安装包;4)通过编辑/etc/profile文件配置环境变量,添加JAVA_HOME和PATH路径;5)使用source命令使配置生效;6)通过javac -version验证安装是否成功。整个过程涵盖了从下载到环境配置的完整流程,确保Java开发环境正确设置。

qq_2937655951的博客 441

常用设计模式——行为型

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6515573.html 一:命令模式     调用者发出请求命令——请求命令类调用接收者的处理方法           请求者发出请求——导致命令对象被创建——命令对象调用执行函数——执行函数中调用接收对象的处理函数   实例:   请求者:遥控器 接收者:电视 命令对象:开电视、关电视、换频道,分别调用了电...

weixin_33788244的博客 101

中介效应、调节效应与交互效应:从概念辨析到统计建模全指南

在社会科学与数据分析研究中,理解变量之间的因果关系与条件性影响是核心任务之一。回归分析作为最基础的统计工具,常被用于探索自变量对因变量的作用机制,而中介效应与调节效应则分别回答了“如何影响”与“何时影响不同”的深层问题。中介效应通过路径分析拆解因果链条,揭示内部的传导机制;调节效应则借助交互项识别影响的边界条件。Bootstrap法已成为检验间接效应的主流手段,而简单斜率分析则让调节作用的模式更加直观。无论是用户研究、医学统计还是产品数据分析,掌握这些模型都能帮助研究者构建更具解释力的实证框架。本文基于大量

weixin_29051149的博客 330

手把手教你使用 YOLOv11/v8 算法 + PaddleOCR 算法完成车牌检测和车牌识别系统,AI智能体,毛玻璃系统,包括PaddlePaddle安装、数据集预处理、模型训练、AI大模型应用等

手把手教你使用 YOLOv11/v8算法 + PaddleOCR算法完成车牌检测和车牌识别系统,AI智能体,毛玻璃系统,包括PaddlePaddle安装、数据集预处理、模型训练、AI大模型应用等。车牌识别系统支持 蓝牌、绿牌、黄牌、双层车牌等车牌识别。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2778

设计模式之美笔记---常用行为型模式

我们知道,创建型设计模式主要解决“对象的创建”问题,结构型设计模式主要解决“类或对象的组合或组装”问题,那行为型设计模式主要解决的就是“类或对象之间的交互”问题。行为型设计模式比较多,有 11 个,几乎占了 23 种经典设计模式的一半。它们分别是:观察者模式、模板模式、策略模式、职责链模式、状态模式、迭代器模式、访问者模式、备忘录模式、命令模式、解释器模式、中介模式。 一、观察者模式 观察者模式(Observer Design Pattern)也被称为发布订阅模式。在GoF的设计模式一书中它是这样定义的

风继续吹 793

YOLO26涨点改进 | 小目标损失函数独家改进篇 | TGRS 2025 | 引入AdaFocalLoss损失函数,改进小目标检测,自适应聚焦小目标与样本分布不平衡,提升检测精度与训练稳定性

本文提出将AdaFocalLoss损失函数应用于YOLO26模型优化,有效提升小目标检测性能。AdaFocalLoss通过目标尺寸感知机制和IoU引导的动态调节,自动调整训练权重和聚焦程度,解决了样本不平衡问题。相比传统损失函数,它无需手动调参,能增强训练稳定性,在多尺度、复杂场景下表现优异。文章详细介绍了AdaFocalLoss的原理、优势及实现方法,并提供了代码集成指南。实验表明该方法能显著提升检测精度和鲁棒性,特别适用于小目标检测任务。

Ai缝合怪、助力小伙伴高效发论文 334

PHP常用设计模式——行为型

空对象 <?php //空对象 //不会出现null现象,而且调用任何方法都不会错误 class NullObject{...

weixin_42971363的博客 273

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

3.设计模式_03_行为型设计模式_01_常用模式

摘要:GoF 23种设计模式分为创建型(5种)、结构型(7种)和行为型(11种)三大类。策略模式是一种行为型模式,它将算法封装为独立类,使它们可互换。核心思想是分离算法使用与实现,避免条件判断。主要角色包括上下文、策略接口和具体策略。优点包括算法自由切换、扩展性好,缺点是增加类数量。典型应用场景如电商支付系统,示例展示了支付宝、微信支付等不同支付策略的实现。通过策略模式可以优雅解决支付方式多样化带来的代码维护问题。

u011488477的博客 937

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

行为型设计模式实战:六种常用模式与Java工程落地

设计模式中,创建型与结构型偏向静态结构,而行为型模式解决的是对象之间的协作与职责分配,是业务代码中出场率最高的一类。策略、模板方法、观察者、迭代器、责任链等模式,通过定义稳定的协作协议,将变化点封装起来,从而降低耦合、提升可扩展性。在订单计价、数据导入、注册通知、审批流等典型场景中,这些模式能够有效替代冗长的条件分支和重复流程,帮助工程更易维护。本文结合Java代码示例,讲解六种常用行为型模式的核心原理、实现方式与常见坑点,为实际项目选型提供可落地的参考。

weixin_32705179的博客 191

DesignPattern设计模式

本文主要介绍了设计模式相关内容。包括软件设计的SOLID原则,设计模式的分类,单例模式的思想与实现,工厂模式的思想与实现,建造者模式的思想与实现,代理模式的思想与实现,责任链模式的思想与实现等内容。供个人学习使用。

专注Java和MySQL领域知识分享 1871

java面试——讲一下常用的设计模式

​GoF 设计模式:23 种,分为创建型、结构型和行为型三大类。​其他设计模式:随着技术的发展,许多新的设计模式被提出,扩展了设计模式的范畴,以适应不同的开发需求和场景。理解并熟练应用这些设计模式,可以显著提高代码的可维护性、可复用性和灵活性,是每个软件开发人员必备的技能之一。设计模式通常分为三大类:​创建型模式结构型模式和 ​行为型模式。下面我们将详细介绍常用的设计模式。设计模式是软件开发中的最佳实践,不同的设计模式适用于不同的场景。

2401_86405063的博客 1282

行为型设计模式

行为型设计模式 在此简单介绍下策略模式和模版模式 策略模式 策略模式可以说开发过程中用到的比较多的设计模式 什么是策略模式? 类似于锦囊妙计,对外来说,这些精囊妙计长得完全一样 策略模式的组成? * 抽象策略角色: 策略类,通常由一个接口或者抽象类实现。 * 具体策略角色:包装了相关的算法和行为。 * 环境角色:持有一个策略类的引用,最终给客户端调用。 应用场景: 1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。 2、 需要在

martin-Cao 235

Java常用设计模式

一、定义 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化。简单说: 模式:在某些场景下,针对某类问题的某种通用的解决方案。 场景:项目所在的环境 问题:约束条件,项目目标等 解决方案:通用、可复用的设计,解决约束达到目标。 二、分类 ...

qq_44543551的博客 167

23种常用设计模式介绍

本文介绍了Java设计模式的三大类别:创建型模式(如单例模式、原型模式、工厂模式、抽象工厂模式、建造者模式)、结构型模式(如适配器模式、组合模式、装饰器模式、外观模式、享元模式、代理模式、桥接模式)和行为型模式(如责任链模式、命令模式、解释器模式、迭代器模式、观察者模式、状态模式、模板模式、中介者模式、备忘录模式、访问者模式、策略模式)。设计模式是解决常见软件设计问题的可复用解决方案,它们提高了代码的可维护性和可扩展性。

一名80后IT人的成长记录,记录自己在工作、学习中的点点滴滴,在成长的喜悦与忧心的故事里,铭记反脆弱的勇气。 1527

Java常用设计模式的实例学习系列-绪论

关于设计模式 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计原则(待更新…) 待完善:面向对象的设计原则 设计模式分类 设计模式分为三种类型,共计23种: 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。 结构型模式:适配器模式...

韩超的博客 (hanchao5272) 1909

【C++】常用设计模式

设计模式是解决软件设计问题的经验总结,合理使用可以提高代码的可维护性、可扩展性和复用性。设计模式(Design Patterns)是软件开发中针对反复出现的问题总结出的通用解决方案。定义对象间的一对多依赖,当一个对象状态改变时,所有依赖者会收到通知并自动更新。将一个类的接口转换成客户希望的另一个接口,使不兼容的类可以一起工作。允许对象在内部状态改变时改变它的行为,看起来像是改变了它的类。将请求的发送和接收解耦,使多个对象都有机会处理这个请求。:对象的创建过程,解耦对象的使用和实例化。

qq_40904479的博客 1293

Java实现常用设计模式

一、设计模式的种类 设计模式比较常用的有23种,实际不止这些,我们统称为23种设计模式,其中常用的又只有其中的十几种。一般分为三类分别是创建型模式、结构型模式和行为型模式。 创建型模式有五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式和原型模式,其特点都是为创建对象提供抽象化得模板类,通过接口减少类之间的耦合。 结构型模式有七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组...

Terisadeng的博客 1337

常用的设计模式详解

设计模式是后端开发中的“瑞士军刀”,合理运用可显著提升代码质量。单例模式优化资源管理,减少内存开销;观察者模式实现松耦合的事件处理;策略模式支持灵活的算法扩展。开发者需结合实际需求选择模式,避免教条化应用。通过持续实践与反思,设计模式将成为构建健壮后端系统的强大助力。

qq_43038960的博客 1129

C++设计模式学习

设计模式是一种经验总结,它描述了在特定环境中经常出现的问题,并提供了问题解决方案的模板。设计模式就像是一套编程阵法,让你在编程世界中更加游刃有余,掌握了这些阵法,你的代码将更加健壮,逻辑清晰,方便维护。通过学习设计模式,你可以实现代码组件间的高度解耦和协同,让你的应用变得更加稳定和可扩展。使用工厂模式,你可以将对象的创建过程与具体类解耦,让代码更加灵活;使用策略模式,你可以根据不同情境灵活切换算法;使用单例模式,确保一个类只有一个实例,并提供全局访问点;

保持分享欲 1511
上一篇: 基于UDP协议的接受和发送
下一篇: 本地进程间通信
ZHAOCHENHAO-
博客等级 码龄10年 2774粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值