c语言编程笔录

首页 >   > 笔记大全

笔记大全

Java设计模式是什么

更新时间:2023-11-06

Java设计模式

Java设计模式是一套被证实有效的解决问题方法的组合,是一种被广泛应用、积累和验证的经验总结,是前辈们的经验和思想的传承,跨越时间和空间的经典。Java设计模式的目的是为了帮助我们编写出更优秀、更易扩展、更易维护、更加健壮、更加可靠、更加高效的软件。

1.单例模式

单例模式是一种常见的创建型设计模式,被广泛应用。通过该模式,能够保证在整个应用程序中,只有一个实例对象被创建。仅当内存中没有该对象时,才会实例化一个对象。Singleton类的构造函数是私有的,从而保证该类不能被其他类实例化,只能通过该类的静态方法getInstance()获得唯一的实例。

  public class Singleton {
     private static Singleton instance;
  
     private Singleton(){}
  
     public static Singleton getInstance(){
        if(instance == null){
           synchronized(Singleton.class){
               if(instance == null){
                   instance = new Singleton();
               }
           }
        }
        return instance;
     }
  }
  

2.工厂模式

工厂模式是一种常见的创建型设计模式,能够为调用者生成不同种类的对象,同时隐藏其创建细节。工厂模式通常包括一个抽象工厂和一个或多个具体工厂,以及一个产品接口和多个具体实现类。客户端只需要通过调用工厂方法即可获得所需的产品对象,无需关心其具体实现类和创建过程。

  public interface Shape {
     void draw();
  }
  
  public class Circle implements Shape {
  
     @Override
     public void draw() {
        System.out.println("Inside Circle::draw() method.");
     }
  }
  
  public class Rectangle implements Shape {
  
     @Override
     public void draw() {
        System.out.println("Inside Rectangle::draw() method.");
     }
  }

  public class ShapeFactory {
  
     public Shape getShape(String shapeType){
        if(shapeType == null){
            return null;
        }        
        if(shapeType.equalsIgnoreCase("CIRCLE")){
            return new Circle();
        } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
            return new Rectangle();
        }
        return null;
     }
  }
  

3.观察者模式

观察者模式是一种常见的行为型设计模式,用于在对象之间建立一对一或一对多的依赖关系,当其中一个对象改变状态时,其所有依赖者都会受到通知并自动更新。该模式包括两部分:观察者和被观察者。观察者需要注册到被观察者上,这样它们就能够收到被观察者的通知信息。

  public interface Observer {
     public void update(String message);
  }
  
  public interface Subject {
     public void attach(Observer observer);
     public void detach(Observer observer);
     public void notifyObservers(String message);
  }
  
  public class ConcreteSubject implements Subject {
  
     private List observers = new ArrayList();
     private String message;
  
     public void attach(Observer observer) {
        observers.add(observer);
     }
  
     public void detach(Observer observer) {
        observers.remove(observer);
     }
  
     public void notifyObservers(String message) {
        for (Observer observer : observers) {
           observer.update(message);
        }
     }    
  
     public String getMessage() {
        return message;
     }
  
     public void setMessage(String message) {
        this.message = message;
        notifyObservers(message);
     }    
  }
  
  public class ConcreteObserver implements Observer {
  
     private String name;
  
     public ConcreteObserver(String name) {
        this.name = name;
     }
  
     public void update(String message) {
        System.out.println(name + " received message:" + message);
     }
  }
  

4.策略模式

策略模式是一种常见的行为型设计模式,用于在多种算法之间进行选择,可以在运行时动态地改变对象的行为。该模式不仅提高了代码的复用性和维护性,而且可以避免使用大量的if-else语句,使逻辑结构更加清晰。

  public interface Strategy {
     public int doOperation(int num1, int num2);
  }
  
  public class OperationAdd implements Strategy{
  
     public int doOperation(int num1, int num2) {
        return num1 + num2;
     }
  }
  
  public class OperationSubtract implements Strategy{
  
     public int doOperation(int num1, int num2) {
        return num1 - num2;
     }
  }
  
  public class Context {
  
     private Strategy strategy;
  
     public Context(Strategy strategy){
        this.strategy = strategy;
     }
  
     public int executeStrategy(int num1, int num2){
        return strategy.doOperation(num1, num2);
     }
  }
  

Java设计模式是一种被广泛应用、积累和验证的经验总结,它能够帮助我们优化软件设计,提高软件质量和可维护性。单例模式能够确保在整个应用程序中只有一个实例对象被创建;工厂模式隐藏了对象创建细节,通过工厂方法获得所需的产品对象;观察者模式能够在对象之间建立依赖关系,当一个对象改变状态时,其所有依赖者都会受到通知并自动更新;策略模式可以在运行时动态地改变对象的行为,在多种算法之间进行选择,使逻辑结构更加清晰。