익명 내부 클래스는 명시적인 이름이 없고 새로운 표현식을 통해 생성되는 Java의 특수 내부 클래스로, 주로 특정 인터페이스를 구현하거나 추상 클래스를 확장하는 데 사용되며 생성 후 즉시 사용됩니다. 일반적인 익명 내부 클래스 디자인 패턴은 다음과 같습니다. 어댑터 패턴: 하나의 인터페이스를 다른 인터페이스로 변환합니다. 전략 패턴: 알고리즘 정의 및 교체. 관찰자 패턴: 관찰자를 등록하고 이벤트를 처리합니다. 문자열 길이로 TreeSet 정렬, 익명 스레드 생성 등과 같은 실제 응용 프로그램에 매우 유용합니다.
익명 내부 클래스는 Java의 특수한 유형의 내부 클래스이며, 새 표현식을 사용하여 직접 생성됩니다. 주로 특정 인터페이스를 구현하거나 특정 추상 클래스를 확장하는 데 사용되며, 대개 메서드 본문 내에서 생성되어 즉시 사용됩니다.
다음은 익명 내부 클래스를 사용하는 일반적인 디자인 패턴입니다.
1. 어댑터 패턴
어댑터 패턴은 익명 내부 클래스를 사용하여 하나의 인터페이스를 다른 인터페이스로 변환합니다. 예를 들어 다음 코드는 익명 내부 클래스를 생성하고 Adaptee
클래스를 Target
인터페이스에 적용합니다. 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
인터페이스를 구현하는 익명 내부 클래스를 만듭니다.
Set<String> treeSet = new TreeSet<>(new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } });
3. 관찰자 패턴
관찰자 패턴은 익명 내부 클래스를 사용하여 관찰을 등록하고 주제에서 발생하는 이벤트를 처리합니다. 예를 들어, 다음 코드는 Subject
객체를 관찰하기 위해 Observer
인터페이스를 구현하는 익명 내부 클래스를 생성합니다.
new Thread() { @Override public void run() { System.out.println("Hello from thread!"); } }.start();실제 사례🎜예: Comparator를 사용하여 TreeSet 생성 🎜🎜 🎜TreeSet의 요소는 비교할 수 있어야 합니다. 다음 코드는 익명 내부 클래스를 사용하여 길이에 따라 문자열을 정렬하는 사용자 정의 비교기를 정의합니다. 🎜rrreee🎜🎜 예: 익명 스레드 만들기 🎜🎜🎜다음 코드는 익명 내부 클래스를 사용하여 다음과 같은 스레드를 만들고 시작합니다. 메시지를 인쇄합니다: 🎜rrreee
위 내용은 Java의 익명 내부 클래스에 대한 디자인 패턴은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!