当前位置: 首页 > 面试题库 >

java特征或mixins模式?

西门飞翮
2023-03-14
问题内容

有没有一种方法可以在Java中模拟mixin或特性?基本上,我需要一种进行多重继承的方法,以便可以向几个类添加通用的业务逻辑


问题答案:

我将所有业务逻辑封装到一个新类中,BusinessLogic并让每个需要BusinessLogic对该类进行调用的类。如果您的类需要一个单一的根目录层次结构来进行调用BusinessLogic,则还必须创建一个接口(BusinessLogicInterface?)

用伪代码:

interface BusinessLogicInterace
{
    void method1();
    void method2();
}

class BusinessLogic implements BusinessLogicInterface
{
    void method1() { ... }
    void method2() { ... }
}

class User 
    extends OtherClass 
    implements BusinessLogicInterface
{
    BusinessLogic logic = new BusinessLogic();

    @Override
    void method1() { logic.method1(); }

    @Override
    void method2() { logic.method2(); }
}

这不是解决缺少多重继承的最漂亮的实现,当接口具有许多方法时,它将变得非常麻烦。最有可能的是,您需要尝试重新设计代码,以避免需要mixins。



 类似资料:
  • 将跟踪和跨度添加到Slf4J MDC,以便您可以从日志聚合器中的给定跟踪或跨度中提取所有日志。示例日志: 2016-02-02 15:30:57.902 INFO [bar,6bfd228dc00d216b,6bfd228dc00d216b,false] 23030 --- [nio-8081-exec-3] ... 2016-02-02 15:30:58.372 ERROR [bar,6bfd

  • 反缓存 anticache设置该选项后,它将删除可能引起服务器响应的Header(if-none-match和if-modified-since)304 not modified。当您要确保完全捕获HTTP交换时,这很有用。当您要确保服务器以完整的数据响应时,也经常在客户端重播期间使用它。 客户端重播 客户端重播可以做到:您提供了一个以前保存的HTTP对话,而mitmproxy则一个接一个地重播了

  •   特征缩放是用来统一资料中的自变项或特征范围的方法,在资料处理中,通常会被使用在资料前处理这个步骤。 1 动机   因为在原始的资料中,各变数的范围大不相同。对于某些机器学习的算法,若没有做过标准化,目标函数会无法适当的运作。举例来说,多数的分类器利用两点间的距离计算两点的差异, 若其中一个特征具有非常广的范围,那两点间的差异就会被该特征左右,因此,所有的特征都该被标准化,这样才能大略的使各特征

  • 我当前的Cucumber文件如下所示: 所以现在我想再添加几个场景,可能是在同一个文件中进行API测试。所以我想为此创建一个新特性,而不是使用Feature:Test Online application页面。这样我就不需要为API测试创建单独的特性文件。

  • trait(特征)类似于其他语言中的interface或者protocol,指定一个实际类型必须满足的功能集合 与interface不同的地方在于,interface会隐藏具体实现类型,而trait不会。在rust中,隐藏实现类型可以由generic配合trait作出。 Rust中的trait: trait关键字 trait对象