运用三种设计模式的程序
在软件开发中,设计模式是解决常见设计问题的良好实践。使用设计模式可以提高软件开发的效率和质量。本文将介绍三种常见的设计模式,包括工厂模式、单例模式和观察者模式,并运用这三种模式构建一个计算器程序。
工厂模式
工厂模式通常用于创建对象的场景中,为了避免客户端直接实例化对象,而将实例化的过程交给工厂去完成。工厂模式包含三种类型:简单工厂、工厂方法和抽象工厂。
在计算器程序中,我们采用简单工厂模式,创建一个OperationFactory类来负责创建不同的运算类。该类包含一个静态方法createOperation,根据输入参数返回不同的运算类。具体实现如下:
```
class OperationFactory {
public static Operation createOperation(String operate) {
Operation operation = null;
switch (operate) {
case "+":
operation = new AddOperation();
break;
case "-":
operation = new SubOperation();
break;
case "*":
operation = new MulOperation();
break;
case "/":
operation = new DivOperation();
break;
}
return operation;
}
}
```
单例模式
单例模式保证一个类仅有一个实例,并提供一个全局访问点。单例模式的应用场景包括线程池、日志对象等。
在计算器程序中,我们采用单例模式来创建Calculator类。计算器程序只需要一个实例,因此我们将其声明为单例。具体实现如下:
```
class Calculator {
private static Calculator instance = null;
private Calculator() {}
public static Calculator getInstance() {
if (instance == null) {
instance = new Calculator();
}
return instance;
}
}
```
观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象的状态发生改变时,它的所有观察者都会收到通知并更新。
在计算器程序中,我们采用观察者模式来更新界面。当用户输入数字、运算符或清空操作时,程序会自动更新界面。具体实现如下:
```
interface Observer {
void update(String text);
}
class Subject {
private List
public void attach(Observer observer) {
observers.add(observer);
}
public void detach(Observer observer) {
observers.remove(observer);
}
public void notifyObservers(String text) {
for (Observer observer : observers) {
observer.update(text);
}
}
}
class Calculator implements Observer {
private Subject subject;
private String text;
public Calculator() {
subject = new Subject();
subject.attach(this);
}
public void update(String text) {
this.text = text;
}
}
```
本文介绍了三种常见的设计模式:工厂模式、单例模式和观察者模式,并应用这三种模式构建了一个计算器程序。通过使用设计模式,可以提高软件开发的效率和质量。