让子类与父类通信的最佳方式是什么

塞巴斯蒂安

我的问题是,让子类与父类交流的最佳方式是什么。例如:我有一个简单地称为 Main 的主类和另一个类 SomeClass。现在 Main 类创建了 SomeClass 的一个实例,一旦 SomeClass 对象的状态发生变化,Main 类应该执行不同的代码,具体取决于发生了什么变化。是的,我知道,这听起来像是观察者设计模式,但是我将如何通过不同的状态更改来实现它呢?我目前正在编写一个带有数据库的 Android 应用程序,以使其更加具体。在我的项目中,我有一个主类、一个用于连接、读取/写入数据库的类和一个 GUI 容器类。(过于简单,还有一些) 主类创建 GUI 和数据库类的实例。现在如果我按下按钮 A,它应该将 A 数据写入数据库,如果我按下按钮 B,它应该将 B 数据写入数据库。因为我认为 gui 类不应该直接访问数据库,所以我尝试了其他选项,而不仅仅是从 gui 类访问数据库 目前,我定义了一个占位符抽象类,只有一种方法,我只是覆盖与功能。所以现在我必须为单击按钮 A 创建一个单一方法类 A,为单击按钮 B 创建一个单一方法类 B。这对我来说听起来不是最好的方法,我的意思是工作,但我想改进我的代码,所以如果你有任何想法,请写下你的解决方案。:) 我定义了一个占位符抽象类,只有一个方法,我只是用功能覆盖。所以现在我必须为单击按钮 A 创建一个单一方法类 A,为单击按钮 B 创建一个单一方法类 B。这对我来说听起来不是最好的方法,我的意思是工作,但我想改进我的代码,所以如果你有任何想法,请写下你的解决方案。:) 我定义了一个占位符抽象类,只有一个方法,我只是用功能覆盖。所以现在我必须为单击按钮 A 创建一个单一方法类 A,为单击按钮 B 创建一个单一方法类 B。这对我来说听起来不是最好的方法,我的意思是工作,但我想改进我的代码,所以如果你有任何想法,请写下你的解决方案。:)

升压

作为一种好的做法,最好避免在 GUI 类中编写代码。所以我们可以在这里使用MVVM 模式

让我为您的案例展示一个简单的示例。这是一ViewModel堂课。视图模型没有对视图类的引用:

public class YourViewModel 
{
    public void LoadA() 
    { 
        // here you can interact with your database
    }

    public void LoadB()
    { 
        // here you can interact with your database
    }
}

这是你的view课。它处理按钮单击、用户与视图的交互并转发到视图模型。它有一个对视图模型的引用。

public class YourView
{
    YourViewModel yourViewModel;

    public YourView()
    {
        yourViewModel = new YourViewModel();
    }

    public void ButtonA_Handler() 
    {
        yourViewModel.LoadA();
    }

    public void ButtonB_Handler() 
    {
        yourViewModel.LoadB();
    }
}

如果您想处理许多事件,那么您可以尝试使用这种方法How to: Handle Multiple Events Using Event Properties

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

什么是自动装配春父类领域中的最佳方式是什么?

从子类中的父类访问设置的最佳方式

Adobe flex与Java通信的最佳方式是什么?

从子类增强基类方法的最佳方法是什么

在angularjs和mvc5之间进行通信的最佳方式是什么?

两台服务器之间进行通信的最佳方式是什么?

在 ubuntu 中,在多个进程之间进行通信的最佳方式是什么

Powershell脚本与Windows服务之间进行通信的最佳方式是什么?

通过catch块直接父类和子类处理异常之间的区别是什么

在C ++中,继承父类的正确方法是什么,以便其子类在父类和子类中没有重复的属性?

在Kotlin中沟通父类及其内部类的最佳方法是什么?

通过Web客户端或某些中间件在vertx中的微服务之间进行通信的最佳方式是什么?

Pyhton 脚本与将内容传输到客户端的 Python Flask 服务器进行通信的最佳方式是什么?

通过钥匙的最佳方式是什么?

使用“isSomething”的最佳方式是什么?

加入 2 表的最佳方式是什么?

处理服务配置的最佳方式是什么?

C ++在超类构造函数中,依赖于子类重写的许多变量的代码的正确运行方式是什么?

类中成员的最佳顺序是什么?

组织Python类的最佳方法是什么?

使用Dagger 2注入子类的最佳方法是什么?

与android中的服务器通信的最佳方法是什么

JPA CriteriaBuilder对子类进行过滤的方式是什么?

为什么在父类之前调用子类的析构函数?

为什么子类看不到父类的方法?

为什么父类和子类都实现相同的接口?

为什么我的子类不继承父类的字体?

为什么父类的静态方法隐藏在子类中?

为什么父类的泛型类型在子类中忽略?