软考
APP下载

运用三种设计模式的程序

在软件开发中,设计模式是解决常见设计问题的良好实践。使用设计模式可以提高软件开发的效率和质量。本文将介绍三种常见的设计模式,包括工厂模式、单例模式和观察者模式,并运用这三种模式构建一个计算器程序。

工厂模式

工厂模式通常用于创建对象的场景中,为了避免客户端直接实例化对象,而将实例化的过程交给工厂去完成。工厂模式包含三种类型:简单工厂、工厂方法和抽象工厂。

在计算器程序中,我们采用简单工厂模式,创建一个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 observers = new ArrayList<>();

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;

}

}

```

本文介绍了三种常见的设计模式:工厂模式、单例模式和观察者模式,并应用这三种模式构建了一个计算器程序。通过使用设计模式,可以提高软件开发的效率和质量。

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库