Dart 语言 条件表达式与设计模式

Dart阿木 发布于 2025-06-18 6 次阅读


摘要:

本文将围绕 Dart 语言中的条件表达式与设计模式展开讨论。我们将深入探讨 Dart 中的条件表达式,包括其语法和常用场景。接着,我们将介绍几种常见的设计模式,并分析如何在 Dart 中实现和应用这些模式。我们将通过实际代码示例展示条件表达式与设计模式在 Dart 中的应用。

一、Dart 中的条件表达式

1. 条件表达式的语法

在 Dart 中,条件表达式主要有两种形式:if-else 语句和条件运算符。

(1)if-else 语句

if-else 语句是最常见的条件表达式,其基本语法如下:

dart

if (condition) {


// 条件为真时执行的代码


} else {


// 条件为假时执行的代码


}


(2)条件运算符

条件运算符(?:)是一种简洁的条件表达式,其基本语法如下:

dart

condition ? expression1 : expression2;


当条件为真时,表达式的值是 expression1 的值;否则,表达式的值是 expression2 的值。

2. 条件表达式的常用场景

(1)控制流程

条件表达式可以用来控制程序的执行流程,例如判断用户输入、处理异常等。

(2)计算表达式的值

条件表达式可以用来计算不同条件下的表达式的值。

二、设计模式

设计模式是一套被反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。下面介绍几种常见的设计模式及其在 Dart 中的实现。

1. 单例模式(Singleton)

单例模式确保一个类只有一个实例,并提供一个全局访问点。

dart

class Singleton {


static Singleton _instance;

factory Singleton() {


if (_instance == null) {


_instance = Singleton._internal();


}


return _instance;


}

Singleton._internal();


}


2. 工厂模式(Factory)

工厂模式用于创建对象,而不直接指定对象的具体类。

dart

abstract class Product {


void use();


}

class ConcreteProductA implements Product {


@override


void use() {


print('使用产品 A');


}


}

class ConcreteProductB implements Product {


@override


void use() {


print('使用产品 B');


}


}

class Factory {


static Product createProduct(String type) {


if (type == 'A') {


return ConcreteProductA();


} else if (type == 'B') {


return ConcreteProductB();


}


return null;


}


}


3. 观察者模式(Observer)

观察者模式定义对象间的一对多依赖关系,当一个对象改变状态时,所有依赖于它的对象都会得到通知并自动更新。

dart

abstract class Observer {


void update();


}

class ConcreteObserver implements Observer {


@override


void update() {


print('观察者收到通知');


}


}

class Subject {


List<Observer> _observers = [];

void addObserver(Observer observer) {


_observers.add(observer);


}

void notifyObservers() {


for (var observer in _observers) {


observer.update();


}


}


}


三、条件表达式与设计模式在 Dart 中的应用

以下是一个结合条件表达式与设计模式的 Dart 代码示例:

dart

class Order {


final String type;

Order(this.type);

void process() {


switch (type) {


case 'A':


print('处理订单 A');


break;


case 'B':


print('处理订单 B');


break;


default:


print('未知订单类型');


break;


}


}


}

class OrderManager {


final List<Order> _orders = [];

void addObserver(Observer observer) {


_orders.forEach((order) => order.addObserver(observer));


}

void notifyObservers() {


for (var order in _orders) {


order.process();


}


}


}

void main() {


var orderManager = OrderManager();


var observer = ConcreteObserver();


orderManager.addObserver(observer);

var orderA = Order('A');


var orderB = Order('B');


_orders.add(orderA);


_orders.add(orderB);

orderManager.notifyObservers();


}


在这个示例中,我们使用了观察者模式来处理订单。当订单类型为 'A' 或 'B' 时,会调用相应的处理方法;否则,输出未知订单类型。通过条件表达式,我们实现了对不同订单类型的处理。

本文介绍了 Dart 中的条件表达式和几种常见的设计模式,并通过实际代码示例展示了它们在 Dart 中的应用。通过学习和应用这些技术,我们可以编写出更加高效、可维护的 Dart 代码。