运用三种设计模式的Java程序
时间: 2023-07-25 19:08:59 浏览: 54
以下是一个使用三种设计模式的Java程序示例:
1. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。
```java
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
2. 工厂模式(Factory Pattern):将对象的创建委托给工厂类,从而实现更灵活的对象创建方式。
```java
public interface Shape {
void draw();
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a rectangle.");
}
}
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle.");
}
}
public class ShapeFactory {
public Shape getShape(String shapeType) {
if (shapeType == null) {
return null;
}
if (shapeType.equalsIgnoreCase("rectangle")) {
return new Rectangle();
} else if (shapeType.equalsIgnoreCase("circle")) {
return new Circle();
}
return null;
}
}
```
3. 观察者模式(Observer Pattern):当一个对象状态发生改变时,其他依赖它的对象将得到通知并自动更新。
```java
public interface Observer {
void update(int value);
}
public interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers();
}
public class Data implements Subject {
private int value;
private List<Observer> observers = new ArrayList<>();
public void setValue(int value) {
this.value = value;
notifyObservers();
}
@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
for (Observer observer : observers) {
observer.update(value);
}
}
}
public class Chart implements Observer {
@Override
public void update(int value) {
System.out.println("Updating chart with value " + value);
}
}
public class Table implements Observer {
@Override
public void update(int value) {
System.out.println("Updating table with value " + value);
}
}
```