好的,我可以为你生成一本Markdown格式的学习文档,主题是设计模式学习笔记,并为你提供一些实例。

设计模式学习笔记

什么是设计模式?

设计模式(Design Patterns),又称设计样式,是一套被反复使用的、经过分类的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被理解和修改、保证代码的可靠性。它是软件工程中的一种常用方法,也是面向对象设计中的一种重要思想。

常见的设计模式

以下列举了几种常见的设计模式:

工厂模式(Factory Pattern)

工厂模式是一种用于创建对象的模式,它通过一个共同的接口来创建不同的对象。在工厂模式中,创建对象的工作由工厂类完成,客户端只需要调用工厂类即可。这样客户端就无需知道具体的创建过程,从而降低了客户端与具体实现类之间的耦合度。

示例代码:

javaCopy Code
interface Shape { void draw(); } class Rectangle implements Shape { @Override public void draw() { System.out.println("画一个矩形"); } } class Circle implements Shape { @Override public void draw() { System.out.println("画一个圆形"); } } class ShapeFactory { public Shape createShape(String shapeType) { if (shapeType.equalsIgnoreCase("circle")) { return new Circle(); } else if (shapeType.equalsIgnoreCase("rectangle")) { return new Rectangle(); } else { return null; } } } public class FactoryPatternDemo { public static void main(String[] args) { ShapeFactory shapeFactory = new ShapeFactory(); Shape circle = shapeFactory.createShape("circle"); circle.draw(); Shape rectangle = shapeFactory.createShape("rectangle"); rectangle.draw(); } }

单例模式(Singleton Pattern)

单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供了一个全局访问点。在实现单例模式时,需要保证线程安全和防止反序列化破坏单例。

示例代码:

javaCopy Code
public class Singleton { private volatile static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == null) { synchronized (Singleton.class) { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } } } return uniqueInstance; } }

观察者模式(Observer Pattern)

观察者模式是一种行为型设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,其所有依赖对象都会收到通知并自动更新。观察者模式有两种角色,分别是被观察者和观察者。

示例代码:

javaCopy Code
interface Subject { void attach(Observer observer); void detach(Observer observer); void notifyObservers(); } interface Observer { void update(String message); } class ConcreteSubject implements Subject { private List<Observer> observers; private String message; public ConcreteSubject() { observers = new ArrayList<>(); } @Override public void attach(Observer observer) { observers.add(observer); } @Override public void detach(Observer observer) { observers.remove(observer); } @Override public void notifyObservers() { for (Observer observer : observers) { observer.update(message); } } public void setMessage(String message) { this.message = message; notifyObservers(); } } class ConcreteObserver implements Observer { private String name; public ConcreteObserver(String name) { this.name = name; } @Override public void update(String message) { System.out.println(name + "收到消息:" + message); } } public class ObserverPatternDemo { public static void main(String[] args) { ConcreteSubject subject = new ConcreteSubject(); Observer observer1 = new ConcreteObserver("张三"); Observer observer2 = new ConcreteObserver("李四"); subject.attach(observer1); subject.attach(observer2); subject.setMessage("这是一条通知"); } }

总结

以上就是几种常见的设计模式,包括工厂模式、单例模式和观察者模式。使用设计模式可以提高代码的复用性和可维护性,让代码更加灵活、可靠和易于理解。