希赛考试网
首页 > 软考 > 软件设计师

运用三种设计模式的程序

希赛网 2024-05-01 13:41:11

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

工厂模式

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

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

}

}

```

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

微信扫一扫,领取最新备考资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考报考咨询

微信扫一扫,定制学习计划