在Java中,內(nèi)部類是指在一個(gè)類中定義的另一個(gè)類。內(nèi)部類可以分為四種類型:成員內(nèi)部類、局部?jī)?nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類。內(nèi)部類的設(shè)計(jì)模式實(shí)踐可以使代碼更加靈活、模塊化和可維護(hù)。
以下是一些常見(jiàn)的設(shè)計(jì)模式實(shí)踐與內(nèi)部類的結(jié)合:
public class FactoryExample {
public interface Product {
void display();
}
public static class ConcreteProduct implements Product {
@Override
public void display() {
System.out.println("Displaying ConcreteProduct");
}
}
public static class ProductFactory {
public Product createProduct() {
return new ConcreteProduct();
}
}
public static void main(String[] args) {
ProductFactory factory = new ProductFactory();
Product product = factory.createProduct();
product.display();
}
}
import java.util.ArrayList;
import java.util.List;
public class ObserverPatternExample {
public interface Observer {
void update(String message);
}
public static class Subject {
private List<Observer> observers = new ArrayList<>();
public void addObserver(Observer observer) {
observers.add(observer);
}
public void notifyObservers(String message) {
for (Observer observer : observers) {
observer.update(message);
}
}
}
public static class ConcreteObserver implements Observer {
@Override
public void update(String message) {
System.out.println("Received message: " + message);
}
}
public static void main(String[] args) {
Subject subject = new Subject();
Observer observer = new ConcreteObserver();
subject.addObserver(observer);
subject.notifyObservers("Hello, World!");
}
}
public class SingletonPatternExample {
private SingletonPatternExample() {}
private static class SingletonHolder {
private static final SingletonPatternExample INSTANCE = new SingletonPatternExample();
}
public static SingletonPatternExample getInstance() {
return SingletonHolder.INSTANCE;
}
public void display() {
System.out.println("Displaying SingletonPatternExample");
}
public static void main(String[] args) {
SingletonPatternExample instance1 = SingletonPatternExample.getInstance();
instance1.display();
SingletonPatternExample instance2 = SingletonPatternExample.getInstance();
instance2.display();
System.out.println(instance1 == instance2); // true
}
}
總的來(lái)說(shuō),內(nèi)部類與設(shè)計(jì)模式的結(jié)合可以幫助我們編寫出更加模塊化、靈活和可維護(hù)的代碼。在實(shí)際項(xiàng)目中,根據(jù)具體的需求和場(chǎng)景選擇合適的設(shè)計(jì)模式與內(nèi)部類結(jié)合,可以提高代碼的質(zhì)量和效率。