21xrx.com
2024-12-29 04:21:39 Sunday
登录
文章检索 我的文章 写文章
模式的三个关键词
2023-06-11 04:38:40 深夜i     --     --

作为一名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面向对象编程中的基石、创建型模式和行为型模式,掌握它们对于我们写出高质量、易于扩展和维护的代码是十分必要的。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复