阅读量:0
- 请简要介绍单例模式的概念及其在Java中的实现方式。
单例模式是一种创建型设计模式,确保类只有一个实例,并提供一个全局访问点。在Java中,实现单例模式通常有以下几种方式:
- 饿汉式单例:在类加载时就创建实例,线程安全,但可能造成资源浪费。
- 懒汉式单例:在首次调用时创建实例,存在线程安全问题,需要加锁进行同步。
- 双重检查锁单例:在懒汉式基础上加锁,提高性能。
- 静态内部类单例:使用静态内部类实现延迟加载,线程安全。
- 什么是工厂模式?请给出一个在Java中实现工厂模式的例子。
工厂模式是一种创建型设计模式,用于创建对象的接口,但让子类决定实例化哪个类。在Java中,工厂模式通常包含一个接口和多个实现该接口的工厂类,示例代码如下:
// 接口 public interface Shape { void draw(); } // 实现类 public class Circle implements Shape { @Override public void draw() { System.out.println("Circle.draw()"); } } public class Rectangle implements Shape { @Override public void draw() { System.out.println("Rectangle.draw()"); } } // 工厂类 public class ShapeFactory { public static Shape createShape(String shapeType) { if (shapeType.equalsIgnoreCase("Circle")) { return new Circle(); } else if (shapeType.equalsIgnoreCase("Rectangle")) { return new Rectangle(); } return null; } } // 使用工厂类创建对象 public class FactoryPatternDemo { public static void main(String[] args) { Shape circle = ShapeFactory.createShape("Circle"); Shape rectangle = ShapeFactory.createShape("Rectangle"); circle.draw(); rectangle.draw(); } }
- 什么是观察者模式?请给出一个在Java中实现观察者模式的例子。
观察者模式是一种行为设计模式,定义了一种一对多的依赖关系,当一个对象的状态发生变化时,其所有依赖者都会收到通知并自动更新。在Java中,可以使用Java内置的Observer和Observable类实现观察者模式,示例代码如下:
// 被观察者 public class Subject extends Observable { private int state; public int getState() { return state; } public void setState(int state) { this.state = state; setChanged(); notifyObservers(state); } } // 观察者 public class Observer implements java.util.Observer { public void update(Observable o, Object arg) { System.out.println("State changed to: " + arg); } } // 使用观察者模式 public class ObserverPatternDemo { public static void main(String[] args) { Subject subject = new Subject(); Observer observer1 = new Observer(); Observer observer2 = new Observer(); subject.addObserver(observer1); subject.addObserver(observer2); subject.setState(1); subject.setState(2); } }
在上述例子中,Subject类继承自Observable类,用于管理观察者列表并通知观察者状态变化;Observer类实现了java.util.Observer接口,用于接收被观察者的通知。通过使用Observer和Observable类,可以方便地实现观察者模式。