21xrx.com
2025-04-12 13:54:41 Saturday
文章检索 我的文章 写文章
模式的三个关键词
2023-06-11 04:38:40 深夜i     10     0

作为一名Java开发者,我深深地理解到,学习并运用设计模式对于我们写出高质量代码是十分重要的。在我的职业生涯中,我学习了许多设计模式,但是有三个关键词是我觉得最为重要的。

1. 多态

多态是Java面向对象编程的基石。它使得我们能够以统一的方式处理不同类型的对象,同时也使得代码更易于扩展和维护。多态可以通过接口和抽象类来实现,下面是一个简单的例子:

interface Animal {
  void makeSound();
}
class Dog implements Animal {
  @Override
  public void makeSound() {
    System.out.println("Woof!");
  }
}
class Cat implements Animal {
  @Override
  public void makeSound() {
    System.out.println("Meow!");
  }
}
public class Main {
  public static void main(String[] args) {
    Animal dog = new Dog();
    Animal cat = new Cat();
    dog.makeSound(); // prints "Woof!"
    cat.makeSound(); // prints "Meow!"
  }
}

在这个例子中,Dog和Cat都实现了Animal接口,并且重写了makeSound方法。我们可以通过Animal类型的引用来调用该方法,而不必知道具体是什么类实现了该接口。

2. 工厂模式

工厂模式是一种创建型的设计模式,它提供了一个通用界面来创建对象,而无需指定其具体实现类。这种模式可以帮助我们解耦代码,使得我们能够更方便地添加、修改和删除对象的实现。下面是一个简单的例子:

interface Animal {
  void makeSound();
}
class Dog implements Animal {
  @Override
  public void makeSound() {
    System.out.println("Woof!");
  }
}
class Cat implements Animal {
  @Override
  public void makeSound() {
    System.out.println("Meow!");
  }
}
class AnimalFactory {
  public Animal createAnimal(String type) {
    if (type.equals("Dog")) {
      return new Dog();
    } else if (type.equals("Cat")) {
      return new Cat();
    } else {
      throw new IllegalArgumentException("Invalid animal type: " + type);
    }
  }
}
public class Main {
  public static void main(String[] args) {
    AnimalFactory factory = new AnimalFactory();
    Animal dog = factory.createAnimal("Dog");
    Animal cat = factory.createAnimal("Cat");
    dog.makeSound(); // prints "Woof!"
    cat.makeSound(); // prints "Meow!"
  }
}

在这个例子中,AnimalFactory类提供了一个工厂方法来创建Animal对象,根据传入的参数来确定具体实现类。

3. 观察者模式

观察者模式是一种行为型的设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象。当主题对象发生变化时,它会通知所有的观察者对象,使得它们能够及时进行相应的处理。下面是一个简单的例子:

import java.util.ArrayList;
import java.util.List;
interface Observer {
  void update();
}
class Subject {
  private List
  observers = new ArrayList<>();
 
  public void attach(Observer observer) {
    observers.add(observer);
  }
  public void detach(Observer observer) {
    observers.remove(observer);
  }
  public void notifyObservers() {
    for (Observer observer : observers) {
      observer.update();
    }
  }
}
class ConcreteObserver implements Observer {
  private String name;
  public ConcreteObserver(String name)
    this.name = name;
  
  @Override
  public void update() {
    System.out.println(name + " has been notified.");
  }
}
public class Main {
  public static void main(String[] args) {
    Subject subject = new Subject();
    subject.attach(new ConcreteObserver("Observer 1"));
    subject.attach(new ConcreteObserver("Observer 2"));
    subject.attach(new ConcreteObserver("Observer 3"));
    subject.notifyObservers(); // prints "Observer 1 has been notified.", "Observer 2 has been notified.", "Observer 3 has been notified."
  }
}

在这个例子中,Subject类表示主题对象,它包含一些状态信息和一个列表来记录观察者。ConcreteObserver类表示具体的观察者对象,它实现了Observer接口,当主题对象发生变化时它会被通知。我们可以通过attach、detach和notifyObservers方法来添加、删除观察者并通知它们。

综上所述,多态、工厂模式和观察者模式是我认为Java设计模式中最为重要的三个关键词。它们分别代表了Java面向对象编程中的基石、创建型模式和行为型模式,掌握它们对于我们写出高质量、易于扩展和维护的代码是十分必要的。

  
  

评论区