Java 匿名内部类的设计模式有哪些?

匿名内部类是 java 中没有显式名称、通过 new 表达式创建的特殊内部类,主要用于实现特定接口或扩展抽象类,并在创建后立即使用。常见的匿名内部类设计模式包括:适配器模式:将一个接口转换为另一个接口。策略模式:定义和替换算法。观察者模式:

匿名内部类java 中没有显式名称、通过 new 表达式创建的特殊内部类,主要用于实现特定接口或扩展抽象类,并在创建后立即使用。常见的匿名内部类设计模式包括:适配器模式:将一个接口转换为另一个接口。策略模式:定义和替换算法。观察者模式:注册观察者并处理事件。它在实际应用中非常有用,例如按字符串长度排序treeset、创建匿名线程等。

Java 匿名内部类的设计模式有哪些?

Java 匿名内部类的设计模式

匿名内部类是 Java 中一种特殊类型的内部类,它没有明确的名称,而是使用一个 new 表达式 直接创建。它主要用于实现特定接口或扩展特定抽象类,并且通常在方法体内创建并立即使用。

主要设计模式

以下是使用匿名内部类的常见设计模式:

1. 适配器模式

适配器模式使用匿名内部类将一个接口转换成另一个接口。例如,以下代码创建一个匿名内部类,将 Adaptee 类适配为 Target 接口:

Target target = new Target() {
    @Override
    public void request() {
        adaptee.specificRequest();
    }
};

登录后复制

2. 策略模式

策略模式使用匿名内部类来定义算法族,并使其可以互换使用。例如,以下代码创建一个匿名内部类,实现 Comparator 接口比较两个字符串的长度:

Comparator<String> comparator = new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.length() - s2.length();
    }
};

登录后复制

3. 观察者模式

观察者模式使用匿名内部类来注册观察者并处理主题发出的事件。例如,以下代码创建一个匿名内部类,实现 Observer 接口以观察 Subject 对象:

Subject subject = new Subject();
Observer observer = new Observer() {
    @Override
    public void update(Subject subject) {
        // 处理主题更新
    }
};
subject.addObserver(observer);

登录后复制

实战案例

示例:创建带有 Comparator 的 TreeSet

TreeSet 要求其元素可以比较。以下代码使用匿名内部类定义自定义比较器,根据字符串长度对字符串进行排序:

Set<String> treeSet = new TreeSet<>(new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.length() - s2.length();
    }
});

登录后复制

示例:创建匿名线程

以下代码使用匿名内部类创建并启动一个线程,在其中打印一条消息:

new Thread() {
    @Override
    public void run() {
        System.out.println("Hello from thread!");
    }
}.start();

登录后复制

以上就是Java 匿名内部类的设计模式有哪些?的详细内容,更多请关注叮当号网其它相关文章!

文章来自互联网,只做分享使用。发布者:牧草,转转请注明出处:https://www.dingdanghao.com/article/435069.html

(0)
上一篇 2024-05-02 17:20
下一篇 2024-05-02 17:20

相关推荐

联系我们

在线咨询: QQ交谈

邮件:442814395@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信公众号