21xrx.com
2024-11-05 20:39:56 Tuesday
登录
文章检索 我的文章 写文章
Java常用设计模式及其应用场景
2023-06-15 19:59:41 深夜i     --     --
单例模式 全局访问点 数据库连接对象

Java设计模式是一套被广泛应用的概念和模板,用于解决常见的软件设计问题。掌握这些设计模式对于软件开发人员来说是非常重要的。在这篇文章中,我们将介绍Java常用的设计模式及其应用场景,并通过代码案例来加深理解。

一、单例模式

单例模式是Java最常见的设计模式之一。它确保一个类只能有一个实例,并为该类提供全局访问点。在需要唯一实例的情况下,单例模式是非常有用的。例如,在一个web应用程序中,一个数据库连接对象只能有一个实例。

代码案例:


public class Singleton {

 private static Singleton instance;

 private Singleton() {}

 public static Singleton getInstance() {

  if (instance == null) {

   instance = new Singleton();

  }

  return instance;

 }

}

二、工厂模式

工厂模式是一种创建型模式,它通过提供工厂方法来实例化对象。在Java中,工厂模式广泛应用于创建通用对象,并将其与应用程序的其他部分隔离开来。例如,一个图形应用程序可以使用工厂模式来创建各种图形对象,如圆形、长方形等。

代码案例:


public interface Shape {

 void draw();

}

public class Circle implements Shape {

 @Override

 public void draw() {

  System.out.println("Circle Drawn.");

 }

}

public class Rectangle implements Shape {

 @Override

 public void draw() {

  System.out.println("Rectangle Drawn.");

 }

}

public class ShapeFactory {

 public Shape getShape(String type) {

  if (type.equalsIgnoreCase("CIRCLE")) {

   return new Circle();

  } else if (type.equalsIgnoreCase("RECTANGLE")) {

   return new Rectangle();

  }

  return null;

 }

}

关键词:工厂模式、工厂方法、图形对象

三、观察者模式

观察者模式是一种行为模式,它允许对象之间的通信。在Java中,观察者模式广泛应用于mvc应用程序中。当模型或状态发生变化时,观察者会被通知,从而更新视图。

代码案例:


import java.util.ArrayList;

import java.util.List;

public class Subject {

 private List observers = new ArrayList<>();

 private int state;

 public int getState()

  return state;

 

 public void setState(int state) {

  this.state = state;

  notifyAllObservers();

 }

 public void attach(Observer observer) {

  observers.add(observer);

 }

 public void notifyAllObservers() {

  for (Observer observer : observers) {

   observer.update();

  }

 }

}

public abstract class Observer {

 protected Subject subject;

 public abstract void update();

}

public class BinaryObserver extends Observer {

 public BinaryObserver(Subject subject) {

  this.subject = subject;

  this.subject.attach(this);

 }

 @Override

 public void update() {

  System.out.println("Binary String: " + Integer.toBinaryString(subject.getState()));

 }

}

public class OctalObserver extends Observer {

 public OctalObserver(Subject subject) {

  this.subject = subject;

  this.subject.attach(this);

 }

 @Override

 public void update() {

  System.out.println("Octal String: " + Integer.toOctalString(subject.getState()));

 }

}

public class HexObserver extends Observer {

 public HexObserver(Subject subject) {

  this.subject = subject;

  this.subject.attach(this);

 }

 @Override

 public void update() {

  System.out.println("Hex String: " + Integer.toHexString(subject.getState()));

 }

}

public class ObserverPatternDemo {

 public static void main(String[] args) {

  Subject subject = new Subject();

  new BinaryObserver(subject);

  new OctalObserver(subject);

  new HexObserver(subject);

  System.out.println("First state change: 15");

  subject.setState(15);

  System.out.println("Second state change: 20");

  subject.setState(20);

 }

}

关键词:观察者模式、mvc、视图

总结:

掌握Java常用的设计模式及其应用场景对于软件工程师来说是非常重要的,这篇文章介绍了单例模式、工厂模式和观察者模式,并附带了相应的代码案例。通过学习这些设计模式,软件工程师可以更好地理解面向对象编程,提高软件开发效率。

  
  

评论区

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