当前位置: 首页 > wzjs >正文

上海做网站设计公司买了域名之后怎么做网站

上海做网站设计公司,买了域名之后怎么做网站,鞍山网站制作公司,wordpress 母婴类模板这些原则共同目标是让代码更灵活、可维护、可复用,是设计模式(如工厂、策略模式)的基础理论支撑。 SOLID原则解析与对应实现 1. 单一职责原则 (SRP) 原则:一个类只负责一个功能。核心思想:一个类应该只有一个引起它变…

这些原则共同目标是让代码更灵活、可维护、可复用,是设计模式(如工厂、策略模式)的基础理论支撑。


SOLID原则解析与对应实现

1. 单一职责原则 (SRP)
  • 原则:一个类只负责一个功能。
  • 核心思想:一个类应该只有一个引起它变化的原因(即只负责一项功能)。
  • 通俗解释
    就像一个人只专注做一件事(例如厨师只管烹饪,服务员只管点餐),避免“万能类”导致代码难以维护。
  • 应用
    • QListWidget 仅负责显示列表项。
    • QScroller 仅负责处理滚动逻辑。
    • 参数配置单独封装(如setupInertialScroll函数)。
// 职责分离:配置惯性滚动的逻辑单独封装
void setupInertialScroll(QAbstractScrollArea *scrollArea) {QScroller::grabGesture(scrollArea->viewport(), QScroller::TouchGesture);QScroller *scroller = QScroller::scroller(scrollArea->viewport());QScrollerProperties properties;properties.setScrollMetric(QScrollerProperties::DecelerationFactor, 0.2);scroller->setScrollerProperties(properties);
}// 主函数仅负责组装
int main() {QListWidget listWidget;setupInertialScroll(&listWidget); // 配置滚动逻辑// ... 添加列表项
}

2. 开闭原则 (OCP)
  • 原则:对扩展开放,对修改关闭。
  • 核心思想:软件实体(类、模块等)应对扩展开放,对修改关闭
  • 通俗解释
    就像乐高积木——通过添加新积木(扩展)来构建新功能,而不是拆掉旧积木(修改原有代码)。
  • 应用
    • 通过继承或组合扩展滚动行为,而非修改现有类。
    • 示例:自定义SmoothScrollArea类,继承QScrollArea并内置惯性逻辑。
class SmoothScrollArea : public QScrollArea {
public:explicit SmoothScrollArea(QWidget *parent = nullptr) : QScrollArea(parent) {QScroller::grabGesture(viewport(), QScroller::TouchGesture);QScrollerProperties properties;properties.setScrollMetric(QScrollerProperties::DecelerationFactor, 0.2);QScroller::scroller(viewport())->setScrollerProperties(properties);}
};// 使用扩展类,而非直接修改QScrollArea
SmoothScrollArea scrollArea;

3. 里氏替换原则 (LSP)
  • 原则:子类必须能替换父类且行为一致。
  • 核心思想:子类必须能够替换父类,且不破坏程序的正确性。
  • 通俗解释
    “鸭子类型”——如果它走路像鸭子、叫声像鸭子,那它就应该能当鸭子用。子类不能违背父类的行为约定。
  • 应用
    • SmoothScrollArea继承QScrollArea,确保所有父类方法仍有效。
    • 避免重写核心方法(如event()),除非明确需要修改行为。
// 正确:子类不破坏父类行为
bool SmoothScrollArea::event(QEvent *event) {if (event->type() == QEvent::Scroll) {// 处理滚动事件,但不影响其他事件}return QScrollArea::event(event); // 确保父类逻辑仍执行
}

4. 接口隔离原则 (ISP)
  • 原则:客户端不应依赖不需要的接口。
  • 核心思想:客户端不应被迫依赖它不需要的接口。
  • 通俗解释
    就像点餐时只选自己吃的菜,而不是被迫接受一份固定套餐(包含不需要的功能)。
  • 应用
    • 若需要更灵活的滚动控制,将QScroller的配置拆分为独立接口。
    • 示例:定义IScrollBehavior接口,允许动态切换滚动策略。
class IScrollBehavior {
public:virtual void applyScroll(QAbstractScrollArea *area) = 0;
};class InertialScroll : public IScrollBehavior {
public:void applyScroll(QAbstractScrollArea *area) override {QScroller::grabGesture(area->viewport(), QScroller::TouchGesture);// ... 参数配置}
};// 使用时注入行为
SmoothScrollArea area;
InertialScroll scrollBehavior;
scrollBehavior.applyScroll(&area);

5. 依赖倒置原则 (DIP)
  • 原则:依赖抽象而非具体实现。
  • 核心思想
    • 高层模块不应依赖低层模块,二者都应依赖抽象
    • 抽象不应依赖细节,细节应依赖抽象。
  • 通俗解释
    就像电脑的USB接口(抽象)——鼠标、键盘(细节)都依赖USB标准,而不是电脑直接依赖具体设备。
  • 应用
    • 高层模块(如主窗口)依赖IScrollBehavior接口,而非直接调用QScroller
class MainWindow : public QMainWindow {
public:MainWindow(IScrollBehavior *scrollBehavior, QWidget *parent = nullptr) : QMainWindow(parent), m_scrollBehavior(scrollBehavior) {QListWidget *list = new QListWidget(this);m_scrollBehavior->applyScroll(list); // 通过接口配置滚动}
private:IScrollBehavior *m_scrollBehavior;
};// 依赖注入
InertialScroll inertialBehavior;
MainWindow window(&inertialBehavior);

最终代码结构(SOLID合规)

// 1. 抽象接口(ISP + DIP)
class IScrollBehavior {
public:virtual void apply(QAbstractScrollArea *area) = 0;
};// 2. 具体实现(SRP)
class InertialScroll : public IScrollBehavior {
public:void apply(QAbstractScrollArea *area) override {QScroller::grabGesture(area->viewport(), QScroller::TouchGesture);QScrollerProperties props;props.setScrollMetric(QScrollerProperties::DecelerationFactor, 0.2);QScroller::scroller(area->viewport())->setScrollerProperties(props);}
};// 3. 可扩展的滚动区域(OCP + LSP)
class SmoothScrollArea : public QScrollArea {
public:explicit SmoothScrollArea(IScrollBehavior *behavior, QWidget *parent = nullptr) : QScrollArea(parent) {behavior->apply(this);}
};// 4. 高层模块依赖抽象(DIP)
int main() {InertialScroll inertialBehavior;SmoothScrollArea scrollArea(&inertialBehavior);QListWidget listWidget;SmoothScrollArea listScroll(&inertialBehavior);// ... 显示窗口
}

优势总结

  1. 可维护性:滚动逻辑与UI组件解耦,修改滚动行为无需改动控件代码。
  2. 可扩展性:新增滚动策略(如弹簧效果)只需实现IScrollBehavior
  3. 可测试性:可通过Mock接口单独测试滚动行为。
  4. 灵活性:运行时动态切换滚动效果(如触屏/鼠标模式)。

通过严格遵循SOLID原则,Qt中的惯性滚动实现既满足了功能需求,又保持了代码的高内聚低耦合。


文章转载自:

http://r656TC7I.njbkz.cn
http://1y9nAa6d.njbkz.cn
http://TEDfidxX.njbkz.cn
http://pFwkw6PQ.njbkz.cn
http://cnm4nQPY.njbkz.cn
http://aYohMKjX.njbkz.cn
http://nYQGFhPZ.njbkz.cn
http://t5BW77zR.njbkz.cn
http://8pNm7lD3.njbkz.cn
http://gtWcUQNq.njbkz.cn
http://X5MZKnyH.njbkz.cn
http://7pUAwhTs.njbkz.cn
http://kAbpL2P2.njbkz.cn
http://SX3vCo4z.njbkz.cn
http://qbHPjAeF.njbkz.cn
http://FeqLSqs6.njbkz.cn
http://p4glXM9R.njbkz.cn
http://y9hGKYXA.njbkz.cn
http://KB2CkEk3.njbkz.cn
http://tk15EL4R.njbkz.cn
http://niahdz3u.njbkz.cn
http://xZNW5Os8.njbkz.cn
http://DM0vr0P3.njbkz.cn
http://zRYny9KZ.njbkz.cn
http://xIs4B426.njbkz.cn
http://Z2P4AMoD.njbkz.cn
http://igmbbRm5.njbkz.cn
http://Cdcbjo9l.njbkz.cn
http://uyPMo7gI.njbkz.cn
http://uYN64IR4.njbkz.cn
http://www.dtcms.com/wzjs/645861.html

相关文章:

  • 成都网站建设小公司排名北京网站备案流程
  • 建网站图片怎么找网站建设常见问题及解决办法
  • 建行信用卡网站中国商标设计网
  • 收录查询 站长工具网页关于我们怎么设计
  • 建设网站怎么搞什么是网络营销的职能
  • 制作彩票网站需要多少钱教育网站模板下载
  • 做外贸最适合的网站系统用WordPress制作单页
  • 如何免费建立可以交流的网站昆明网站建设logovi
  • 南宁seo诊断佛山网络优化推广公司
  • 建设积分兑换官方网站海丰网站建设
  • wordpress能不能做企业网站南昌建设公司网站
  • 公众号平台建设网站判断网站 是否用wordpress 建站
  • 网站建设人员组成qq刷赞网站推广
  • 视频网站做视频容易火邢台手机网站建设服务
  • html5 音乐网站网站平台建设合同模版
  • 自动做网页的网站泰州企业网站建站模板
  • 做二手货的网站有哪些焊工培训班
  • 怎么做网站网页婚纱摄影平台
  • 保山公司网站建设哈尔滨网站优化排名
  • 深圳网站搭建电话wordpress如何建导航
  • 列举及简述网站建设的流程新站网站建设
  • 网站建设的利益分析1688网站简介
  • 重庆市场所码图片网站 seo 优化 效果
  • 湖州网站开发区火炬手原创wordpress付费主题
  • 网站 建设的售后服务个人网站有什么
  • 具备网站维护与建设能力idc 网站源码
  • 重庆网站建设mswzjsasp.net.做简单的网站
  • 广州网站建设骏域网站开发新客户的十大渠道
  • 软文发稿网站网站建设流程图
  • 做网站为什么图片上传不了衡水提供网站制作公司报价