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