本文目录导读:
在软件开发领域,设计模式是一种被广泛认可的解决特定问题的优秀解决方案,它们是经过时间检验的、可重用的代码片段,可以帮助开发者更高效地构建和维护软件系统,作为一名评测编程专家,掌握设计模式对于提高自己的编程技能和优化代码质量具有重要意义。
本文将介绍12种常见的设计模式,包括单例模式、工厂模式、观察者模式等,并通过实例演示如何运用这些设计模式解决实际问题,我们还将讨论设计模式的优势、适用场景以及如何在实际项目中选择合适的设计模式。
设计模式简介
设计模式是一种在特定场景下解决问题的通用可复用方案,它们提供了一种在不同情况下解决问题的方法,使得开发者能够更容易地编写出高质量、可维护的代码,设计模式的核心理念是将复杂的问题分解为简单的、易于理解和实现的部分。
12种常见设计模式
1、单例模式(Singleton)
单例模式是一种保证一个类只有一个实例,并提供一个全局访问点的模式,它主要用于需要频繁创建和销毁的对象,如数据库连接、日志记录器等。
public class Singleton { private static Singleton instance; private Singleton() {} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
2、工厂模式(Factory)
工厂模式是一种定义对象创建过程的设计模式,它提供了一种将创建对象的逻辑封装在一个接口或抽象类中的方法,这样,客户端只需要关注与具体产品相关的接口,而不需要关心产品的具体实现细节。
public interface Shape { void draw(); } public class Circle implements Shape { @Override public void draw() { System.out.println("Draw a circle"); } } public abstract class ShapeFactory { public abstract Shape getShape(String shapeType); } public class CircleFactory extends ShapeFactory { @Override public Shape getShape(String shapeType) { if (shapeType == null) { return null; } else if (shapeType.equalsIgnoreCase("CIRCLE")) { return new Circle(); } return null; } }
3、观察者模式(Observer)
观察者模式是一种定义对象之间依赖关系的设计模式,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新,这种模式常用于事件驱动的系统中,如用户界面更新、数据变化等。
public interface Subject { void addObserver(Observer observer); void removeObserver(Observer observer); void notifyObservers(); } public interface Observer { void update(String message); } public class ConcreteSubject implements Subject { private List<Observer> observers = new ArrayList<>(); private String message; @Override public void addObserver(Observer observer) { observers.add(observer); } @Override public void removeObserver(Observer observer) { observers.remove(observer); } @Override public void notifyObservers() { for (Observer observer : observers) { observer.update(message); } } }