ToB企服应用市场:ToB评测及商务社交产业平台

标题: TouchGFX计划模式代码实例说明 [打印本页]

作者: 用户国营    时间: 2024-12-1 02:39
标题: TouchGFX计划模式代码实例说明
一)Model - View - Presenter (MVP) 模式在 TouchGFX 中的应用
1)Model(模子):
模子代表应用程序的数据和业务逻辑。例如,在一个简朴的计数器应用中,模子可以是一个包含计数器当前值的类。
  1. class CounterModel
  2. {
  3. private:
  4.     int count;
  5. public:
  6.     CounterModel() : count(0) {}
  7.     int getCount() const
  8.     {
  9.         return count;
  10.     }
  11.     void increment()
  12.     {
  13.         count++;
  14.     }
  15. };
复制代码
2)View(视图):
在 TouchGFX 中,视图是通过界面计划工具创建的图形用户界面(GUI)元素。例如,有一个文本框用于表现计数器的值,一个按钮用于增加计数器的值。这些 GUI 元素在 TouchGFX Designer 中计划,然后在代码中通过相干的类来引用。
视图类需要能够更新界面表现,以反映模子的状态厘革。以下是一个简朴的视图类示例,用于表现计数器的值:
  1. class CounterView : public touchgfx::View
  2. {
  3. private:
  4.     touchgfx::TextAreaWithOneWildcard& countText;
  5. public:
  6.     CounterView(touchgfx::TextAreaWithOneWildcard& textArea) : countText(textArea) {}
  7.     void updateCounterDisplay(int count)
  8.      {
  9.         Unicode::snprintf(countText.getBuffer(), countText.getBufferSize(), "%d", count);
  10.         countText.invalidate();
  11.     }
  12. };
复制代码
3)Presenter(展示器):
展示器作为模子和视图之间的桥梁,它包含对模子和视图的引用,并处理用户交互。当用户点击增加计数器的按钮时,展示器会调用模子的increment方法来更新数据,然后调用视图的updateCounterDisplay方法来更新界面。
  1. class CounterPresenter
  2. {
  3. private:
  4.     CounterModel& model;
  5.     CounterView& view;
  6. public:
  7.     CounterPresenter(CounterModel& m, CounterView& v) : model(m), view(v) {}
  8.     void handleIncrementButtonClicked()
  9.     {
  10.         model.increment();
  11.         view.updateCounterDisplay(model.getCount());
  12.     }
  13. };
复制代码
利用示例:
在main函数大概应用程序初始化的地方,可以如许利用 MVP 模式构建计数器应用。
// 创建模子、视图和展示器
  1. CounterModel counterModel;
  2. touchgfx::TextAreaWithOneWildcard countTextArea;
  3. CounterView counterView(countTextArea);
  4. CounterPresenter counterPresenter(counterModel, counterView);
复制代码
// 假设这里有一个按钮点击事件处理器,将其与展示器的方法关联
Button incrementButton;
incrementButton.setClickAction(counterPresenter, &CounterPresenter::handleIncrementButtonClicked);
二)Model - View - Controller (MVC) 模式在 TouchGFX 中的应用示例(与 MVP 雷同但有区别)
1)Model(模子):
同样以计数器应用为例,模子类和 MVP 模式中的雷同。
  1. class CounterModel
  2. {
  3. private:
  4.     int count;
  5. public:
  6.     CounterModel() : count(0) {}
  7.     int getCount() const
  8.      {
  9.         return count;
  10.     }
  11.     void increment() {
  12.         count++;
  13.     }
  14. };
复制代码
2)View(视图):
在 MVC 模式中,视图主要负责表现。它会从模子获取数据来更新本身的表现,但不像 MVP 中的视图那样直接被展示器调用更新方法。
  1. class CounterView : public touchgfx::View
  2. {
  3. private:
  4.     touchgfx::TextAreaWithOneWildcard& countText;
  5. public:
  6.     CounterView(touchgfx::TextAreaWithOneWildcard& textArea) : countText(textArea) {}
  7.     void updateCounterDisplay(int count)
  8.      {
  9.         Unicode::snprintf(countText.getBuffer(), countText.getBufferSize(), "%d", count);
  10.         countText.invalidate();
  11.     }
  12. };
复制代码
3)Controller(控制器):
控制器处理用户输入和模子更新,同时也会通知视图更新表现。与 MVP 差别的是,它的职责分别更偏重于控制整个流程。
  1. class CounterController
  2. {
  3. private:
  4.     CounterModel& model;
  5.     CounterView& view;
  6. public:
  7.     CounterController(CounterModel& m, CounterView& v) : model(m), view(v) {}
  8.     void handleIncrementButtonClicked()
  9.     {
  10.         model.increment();
  11.         view.updateCounterDisplay(model.getCount());
  12.     }
  13. };
复制代码
利用示例:
与 MVP 模式雷同,在应用程序初始化阶段利用 MVC 模式构建计数器应用。
// 创建模子、视图和控制器
CounterModel counterModel;
touchgfx::TextAreaWithOneWildcard countTextArea;
CounterView counterView(countTextArea);
CounterController counterController(counterModel, counterView);
// 假设这里有一个按钮点击事件处理器,将其与控制器的方法关联
Button incrementButton;
incrementButton.setClickAction(counterController, &CounterController::handleIncrementButtonClicked);
这些计划模式有助于将 TouchGFX 应用程序的差别职责分离,使得代码更加模块化、易于维护和扩展。在实际应用中,可以根据具体的项目需求选择合适的计划模式。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4