软件设计模式:单例、工厂、观察者模式实现实战
软件设计模式:实战演练
本文提供三个程序设计题目,帮助你深入理解并实践三种常见的设计模式:单例模式、工厂模式和观察者模式。
1. 实现一个线程安全的单例模式类
- 要求:设计一个类,确保无论在多线程环境下被调用多少次,都只会创建一个实例。
2. 实现一个工厂模式的类
- 要求:设计一个类,可以根据传入的参数创建不同类型的对象。
3. 实现一个观察者模式的类
- 要求:设计一个类,可以让多个对象监听同一个事件,并在事件触发时执行相应的操作。
代码示例:
**单例模式:**javapublic class Singleton { private static Singleton instance; private Singleton() {}
public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; }}
**工厂模式:**javapublic interface Product { void show();}
public class ConcreteProductA implements Product { @Override public void show() { System.out.println('A'); }}
public class ConcreteProductB implements Product { @Override public void show() { System.out.println('B'); }}
public class Factory { public static Product createProduct(String type) { if ('A'.equals(type)) { return new ConcreteProductA(); } else if ('B'.equals(type)) { return new ConcreteProductB(); } return null; }}
**观察者模式:**javapublic interface Observer { void update(String message);}
public class Subject { private List
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); } }}
尝试用代码实现以上三个模式,并思考以下问题:
- 如何确保单例模式的线程安全性?* 工厂模式如何根据不同的参数创建不同的对象?* 观察者模式如何实现多个对象监听同一个事件?
通过实际代码编写,你将更深刻地理解设计模式的应用场景和实现方法。
原文地址: https://www.cveoy.top/t/topic/nP0a 著作权归作者所有。请勿转载和采集!