From c8be4b317d6c53f9d73560a6b54369e95ceb1ce7 Mon Sep 17 00:00:00 2001
From: GeWuYou <95328647+GeWuYou@users.noreply.github.com>
Date: Thu, 5 Feb 2026 12:46:44 +0800
Subject: [PATCH] =?UTF-8?q?refactor(core):=20=E5=B0=86=E5=91=BD=E4=BB=A4?=
=?UTF-8?q?=E5=92=8C=E6=9F=A5=E8=AF=A2=E6=80=BB=E7=BA=BF=E9=87=8D=E6=9E=84?=
=?UTF-8?q?=E4=B8=BA=E6=89=A7=E8=A1=8C=E5=99=A8=E6=A8=A1=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 将 CommandBus 重命名为 CommandExecutor 并更新相关接口
- 将 QueryBus 重命名为 QueryExecutor 并更新相关接口
- 将 AsyncQueryBus 重命名为 AsyncQueryExecutor 并更新相关接口
- 更新 ArchitectureContext 中的服务引用和错误消息
- 修改 ArchitectureServices 中的私有字段和公共属性名称
- 更新所有测试文件中的实例变量和服务引用
- 修改测试类名称以匹配新的执行器命名
- 更新状态机系统测试中的容器注册项
---
.../architecture/IArchitectureServices.cs | 6 +--
.../command/ICommandBus.cs | 35 ---------------
.../command/ICommandExecutor.cs | 36 +++++++++++++++
.../query/IAsyncQueryBus.cs | 15 -------
.../query/IAsyncQueryExecutor.cs | 16 +++++++
.../query/IQueryBus.cs | 15 -------
.../query/IQueryExecutor.cs | 16 +++++++
.../architecture/ArchitectureContextTests.cs | 12 ++---
.../architecture/ArchitectureServicesTests.cs | 22 +++++-----
.../architecture/GameContextTests.cs | 4 +-
.../command/AbstractAsyncCommandTests.cs | 6 +--
...andBusTests.cs => CommandExecutorTests.cs} | 22 +++++-----
.../query/AbstractAsyncQueryTests.cs | 6 +--
...BusTests.cs => AsyncQueryExecutorTests.cs} | 26 +++++------
...QueryBusTests.cs => QueryExecutorTests.cs} | 12 ++---
.../state/StateMachineSystemTests.cs | 6 +--
.../utility/AbstractContextUtilityTests.cs | 6 +--
.../architecture/ArchitectureContext.cs | 22 +++++-----
.../architecture/ArchitectureServices.cs | 44 ++++++++++---------
.../{CommandBus.cs => CommandExecutor.cs} | 5 ++-
...AsyncQueryBus.cs => AsyncQueryExecutor.cs} | 2 +-
GFramework.Core/query/QueryBus.cs | 23 ----------
GFramework.Core/query/QueryExecutor.cs | 27 ++++++++++++
23 files changed, 198 insertions(+), 186 deletions(-)
delete mode 100644 GFramework.Core.Abstractions/command/ICommandBus.cs
create mode 100644 GFramework.Core.Abstractions/command/ICommandExecutor.cs
delete mode 100644 GFramework.Core.Abstractions/query/IAsyncQueryBus.cs
create mode 100644 GFramework.Core.Abstractions/query/IAsyncQueryExecutor.cs
delete mode 100644 GFramework.Core.Abstractions/query/IQueryBus.cs
create mode 100644 GFramework.Core.Abstractions/query/IQueryExecutor.cs
rename GFramework.Core.Tests/command/{CommandBusTests.cs => CommandExecutorTests.cs} (91%)
rename GFramework.Core.Tests/query/{AsyncQueryBusTests.cs => AsyncQueryExecutorTests.cs} (91%)
rename GFramework.Core.Tests/query/{QueryBusTests.cs => QueryExecutorTests.cs} (91%)
rename GFramework.Core/command/{CommandBus.cs => CommandExecutor.cs} (91%)
rename GFramework.Core/query/{AsyncQueryBus.cs => AsyncQueryExecutor.cs} (91%)
delete mode 100644 GFramework.Core/query/QueryBus.cs
create mode 100644 GFramework.Core/query/QueryExecutor.cs
diff --git a/GFramework.Core.Abstractions/architecture/IArchitectureServices.cs b/GFramework.Core.Abstractions/architecture/IArchitectureServices.cs
index ef4c7ca..36a626d 100644
--- a/GFramework.Core.Abstractions/architecture/IArchitectureServices.cs
+++ b/GFramework.Core.Abstractions/architecture/IArchitectureServices.cs
@@ -26,15 +26,15 @@ public interface IArchitectureServices : IContextAware
///
/// 获取命令总线
///
- public ICommandBus CommandBus { get; }
+ public ICommandExecutor CommandExecutor { get; }
///
/// 获取查询总线
///
- public IQueryBus QueryBus { get; }
+ public IQueryExecutor QueryExecutor { get; }
///
/// 获取异步查询总线
///
- public IAsyncQueryBus AsyncQueryBus { get; }
+ public IAsyncQueryExecutor AsyncQueryExecutor { get; }
}
\ No newline at end of file
diff --git a/GFramework.Core.Abstractions/command/ICommandBus.cs b/GFramework.Core.Abstractions/command/ICommandBus.cs
deleted file mode 100644
index 824ba51..0000000
--- a/GFramework.Core.Abstractions/command/ICommandBus.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-namespace GFramework.Core.Abstractions.command;
-
-///
-/// 定义命令总线接口,用于执行各种命令
-///
-public interface ICommandBus
-{
- ///
- /// 发送并执行一个命令
- ///
- /// 要执行的命令对象
- public void Send(ICommand command);
-
- ///
- /// 发送并执行一个带返回值的命令
- ///
- /// 命令执行结果的类型
- /// 要执行的带返回值的命令对象
- /// 命令执行的结果
- public TResult Send(ICommand command);
-
- ///
- /// 发送并异步执行一个命令
- ///
- /// 要执行的命令对象
- Task SendAsync(IAsyncCommand command);
-
- ///
- /// 发送并异步执行一个带返回值的命令
- ///
- /// 命令执行结果的类型
- /// 要执行的带返回值的命令对象
- /// 命令执行的结果
- Task SendAsync(IAsyncCommand command);
-}
\ No newline at end of file
diff --git a/GFramework.Core.Abstractions/command/ICommandExecutor.cs b/GFramework.Core.Abstractions/command/ICommandExecutor.cs
new file mode 100644
index 0000000..538a866
--- /dev/null
+++ b/GFramework.Core.Abstractions/command/ICommandExecutor.cs
@@ -0,0 +1,36 @@
+namespace GFramework.Core.Abstractions.command;
+
+///
+/// 定义命令执行器接口,提供同步和异步方式发送并执行命令的方法。
+///
+public interface ICommandExecutor
+{
+ ///
+ /// 发送并执行一个命令。
+ ///
+ /// 要执行的命令对象,实现 ICommand 接口。
+ public void Send(ICommand command);
+
+ ///
+ /// 发送并执行一个带返回值的命令。
+ ///
+ /// 命令执行结果的类型。
+ /// 要执行的带返回值的命令对象,实现 ICommand<TResult> 接口。
+ /// 命令执行的结果,类型为 TResult。
+ public TResult Send(ICommand command);
+
+ ///
+ /// 发送并异步执行一个命令。
+ ///
+ /// 要执行的命令对象,实现 IAsyncCommand 接口。
+ /// 表示异步操作的任务。
+ Task SendAsync(IAsyncCommand command);
+
+ ///
+ /// 发送并异步执行一个带返回值的命令。
+ ///
+ /// 命令执行结果的类型。
+ /// 要执行的带返回值的命令对象,实现 IAsyncCommand<TResult> 接口。
+ /// 表示异步操作的任务,其结果为命令执行的结果,类型为 TResult。
+ Task SendAsync(IAsyncCommand command);
+}
\ No newline at end of file
diff --git a/GFramework.Core.Abstractions/query/IAsyncQueryBus.cs b/GFramework.Core.Abstractions/query/IAsyncQueryBus.cs
deleted file mode 100644
index db1700c..0000000
--- a/GFramework.Core.Abstractions/query/IAsyncQueryBus.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace GFramework.Core.Abstractions.query;
-
-///
-/// 异步查询总线接口,用于处理异步查询请求
-///
-public interface IAsyncQueryBus
-{
- ///
- /// 异步发送查询请求并返回结果
- ///
- /// 查询结果的类型
- /// 要执行的异步查询对象
- /// 表示异步操作的任务,任务结果为查询结果
- Task SendAsync(IAsyncQuery query);
-}
\ No newline at end of file
diff --git a/GFramework.Core.Abstractions/query/IAsyncQueryExecutor.cs b/GFramework.Core.Abstractions/query/IAsyncQueryExecutor.cs
new file mode 100644
index 0000000..22f18f0
--- /dev/null
+++ b/GFramework.Core.Abstractions/query/IAsyncQueryExecutor.cs
@@ -0,0 +1,16 @@
+namespace GFramework.Core.Abstractions.query;
+
+
+///
+/// 定义一个异步查询执行器接口,用于发送异步查询请求并获取结果。
+///
+public interface IAsyncQueryExecutor
+{
+ ///
+ /// 异步发送查询请求并返回结果。
+ ///
+ /// 查询结果的类型。
+ /// 要执行的异步查询对象,必须实现 IAsyncQuery<TResult> 接口。
+ /// 表示异步操作的任务,任务完成时返回查询结果。
+ Task SendAsync(IAsyncQuery query);
+}
diff --git a/GFramework.Core.Abstractions/query/IQueryBus.cs b/GFramework.Core.Abstractions/query/IQueryBus.cs
deleted file mode 100644
index 138548c..0000000
--- a/GFramework.Core.Abstractions/query/IQueryBus.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace GFramework.Core.Abstractions.query;
-
-///
-/// 查询总线接口,用于发送和处理查询请求
-///
-public interface IQueryBus
-{
- ///
- /// 发送查询请求并返回结果
- ///
- /// 查询结果的类型
- /// 要发送的查询对象
- /// 查询结果
- public TResult Send(IQuery query);
-}
\ No newline at end of file
diff --git a/GFramework.Core.Abstractions/query/IQueryExecutor.cs b/GFramework.Core.Abstractions/query/IQueryExecutor.cs
new file mode 100644
index 0000000..6d47947
--- /dev/null
+++ b/GFramework.Core.Abstractions/query/IQueryExecutor.cs
@@ -0,0 +1,16 @@
+namespace GFramework.Core.Abstractions.query;
+
+
+///
+/// 定义一个查询执行器接口,用于发送查询请求并获取结果。
+///
+public interface IQueryExecutor
+{
+ ///
+ /// 发送查询请求并返回结果。
+ ///
+ /// 查询结果的类型。
+ /// 要发送的查询对象,必须实现 IQuery<TResult> 接口。
+ /// 查询的结果,类型为 TResult。
+ TResult Send(IQuery query);
+}
diff --git a/GFramework.Core.Tests/architecture/ArchitectureContextTests.cs b/GFramework.Core.Tests/architecture/ArchitectureContextTests.cs
index 1104c3f..059c5ac 100644
--- a/GFramework.Core.Tests/architecture/ArchitectureContextTests.cs
+++ b/GFramework.Core.Tests/architecture/ArchitectureContextTests.cs
@@ -59,9 +59,9 @@ public class ArchitectureContextTests
// 创建服务实例
_eventBus = new EventBus();
- _commandBus = new CommandBus();
- _queryBus = new QueryBus();
- _asyncQueryBus = new AsyncQueryBus();
+ _commandBus = new CommandExecutor();
+ _queryBus = new QueryExecutor();
+ _asyncQueryBus = new AsyncQueryExecutor();
_environment = new DefaultEnvironment();
// 将服务注册到容器
@@ -77,9 +77,9 @@ public class ArchitectureContextTests
private ArchitectureContext? _context;
private IocContainer? _container;
private EventBus? _eventBus;
- private CommandBus? _commandBus;
- private QueryBus? _queryBus;
- private AsyncQueryBus? _asyncQueryBus;
+ private CommandExecutor? _commandBus;
+ private QueryExecutor? _queryBus;
+ private AsyncQueryExecutor? _asyncQueryBus;
private DefaultEnvironment? _environment;
///
diff --git a/GFramework.Core.Tests/architecture/ArchitectureServicesTests.cs b/GFramework.Core.Tests/architecture/ArchitectureServicesTests.cs
index 78858f1..9cf748f 100644
--- a/GFramework.Core.Tests/architecture/ArchitectureServicesTests.cs
+++ b/GFramework.Core.Tests/architecture/ArchitectureServicesTests.cs
@@ -21,7 +21,7 @@ namespace GFramework.Core.Tests.architecture;
/// ArchitectureServices类的单元测试
/// 测试内容包括:
/// - 服务容器初始化
-/// - 所有服务实例创建(Container, EventBus, CommandBus, QueryBus)
+/// - 所有服务实例创建(Container, EventBus, CommandExecutor, QueryExecutor)
/// - SetContext方法 - 设置上下文
/// - SetContext方法 - 重复设置上下文
/// - GetContext方法 - 获取已设置上下文
@@ -51,8 +51,8 @@ public class ArchitectureServicesTests
{
Assert.That(_services!.Container, Is.Not.Null);
Assert.That(_services.EventBus, Is.Not.Null);
- Assert.That(_services.CommandBus, Is.Not.Null);
- Assert.That(_services.QueryBus, Is.Not.Null);
+ Assert.That(_services.CommandExecutor, Is.Not.Null);
+ Assert.That(_services.QueryExecutor, Is.Not.Null);
}
[Test]
@@ -78,8 +78,8 @@ public class ArchitectureServicesTests
[Test]
public void CommandBus_Should_Be_Instance_Of_CommandBus()
{
- Assert.That(_services!.CommandBus, Is.InstanceOf());
- Assert.That(_services.CommandBus, Is.InstanceOf());
+ Assert.That(_services!.CommandExecutor, Is.InstanceOf());
+ Assert.That(_services.CommandExecutor, Is.InstanceOf());
}
///
@@ -88,8 +88,8 @@ public class ArchitectureServicesTests
[Test]
public void QueryBus_Should_Be_Instance_Of_QueryBus()
{
- Assert.That(_services!.QueryBus, Is.InstanceOf());
- Assert.That(_services.QueryBus, Is.InstanceOf());
+ Assert.That(_services!.QueryExecutor, Is.InstanceOf());
+ Assert.That(_services.QueryExecutor, Is.InstanceOf());
}
///
@@ -198,7 +198,7 @@ public class ArchitectureServicesTests
var services1 = new ArchitectureServices();
var services2 = new ArchitectureServices();
- Assert.That(services1.CommandBus, Is.Not.SameAs(services2.CommandBus));
+ Assert.That(services1.CommandExecutor, Is.Not.SameAs(services2.CommandExecutor));
}
///
@@ -210,7 +210,7 @@ public class ArchitectureServicesTests
var services1 = new ArchitectureServices();
var services2 = new ArchitectureServices();
- Assert.That(services1.QueryBus, Is.Not.SameAs(services2.QueryBus));
+ Assert.That(services1.QueryExecutor, Is.Not.SameAs(services2.QueryExecutor));
}
}
@@ -224,8 +224,8 @@ public class TestArchitectureContextV3 : IArchitectureContext
public IIocContainer Container => _container;
public IEventBus EventBus => new EventBus();
- public ICommandBus CommandBus => new CommandBus();
- public IQueryBus QueryBus => new QueryBus();
+ public ICommandExecutor CommandExecutor => new CommandExecutor();
+ public IQueryExecutor QueryExecutor => new QueryExecutor();
public TService? GetService() where TService : class
{
diff --git a/GFramework.Core.Tests/architecture/GameContextTests.cs b/GFramework.Core.Tests/architecture/GameContextTests.cs
index f52881f..9bd4ef8 100644
--- a/GFramework.Core.Tests/architecture/GameContextTests.cs
+++ b/GFramework.Core.Tests/architecture/GameContextTests.cs
@@ -244,12 +244,12 @@ public class TestArchitectureContext : IArchitectureContext
///
/// 获取命令总线
///
- public ICommandBus CommandBus => new CommandBus();
+ public ICommandExecutor CommandExecutor => new CommandExecutor();
///
/// 获取查询总线
///
- public IQueryBus QueryBus => new QueryBus();
+ public IQueryExecutor QueryExecutor => new QueryExecutor();
///
/// 获取环境对象
diff --git a/GFramework.Core.Tests/command/AbstractAsyncCommandTests.cs b/GFramework.Core.Tests/command/AbstractAsyncCommandTests.cs
index 988e612..c9863dc 100644
--- a/GFramework.Core.Tests/command/AbstractAsyncCommandTests.cs
+++ b/GFramework.Core.Tests/command/AbstractAsyncCommandTests.cs
@@ -34,10 +34,10 @@ public class AbstractAsyncCommandTests
{
_container = new IocContainer();
_container.RegisterPlurality(new EventBus());
- _container.RegisterPlurality(new CommandBus());
- _container.RegisterPlurality(new QueryBus());
+ _container.RegisterPlurality(new CommandExecutor());
+ _container.RegisterPlurality(new QueryExecutor());
_container.RegisterPlurality(new DefaultEnvironment());
- _container.RegisterPlurality(new AsyncQueryBus());
+ _container.RegisterPlurality(new AsyncQueryExecutor());
_context = new ArchitectureContext(_container);
}
diff --git a/GFramework.Core.Tests/command/CommandBusTests.cs b/GFramework.Core.Tests/command/CommandExecutorTests.cs
similarity index 91%
rename from GFramework.Core.Tests/command/CommandBusTests.cs
rename to GFramework.Core.Tests/command/CommandExecutorTests.cs
index 2b0f032..908e258 100644
--- a/GFramework.Core.Tests/command/CommandBusTests.cs
+++ b/GFramework.Core.Tests/command/CommandExecutorTests.cs
@@ -17,15 +17,15 @@ namespace GFramework.Core.Tests.command;
/// - SendAsync方法(带返回值)处理null异步命令
///
[TestFixture]
-public class CommandBusTests
+public class CommandExecutorTests
{
[SetUp]
public void SetUp()
{
- _commandBus = new CommandBus();
+ _commandExecutor = new CommandExecutor();
}
- private CommandBus _commandBus = null!;
+ private CommandExecutor _commandExecutor = null!;
///
/// 测试Send方法执行命令
@@ -36,7 +36,7 @@ public class CommandBusTests
var input = new TestCommandInput { Value = 42 };
var command = new TestCommand(input);
- Assert.DoesNotThrow(() => _commandBus.Send(command));
+ Assert.DoesNotThrow(() => _commandExecutor.Send(command));
Assert.That(command.Executed, Is.True);
Assert.That(command.ExecutedValue, Is.EqualTo(42));
}
@@ -47,7 +47,7 @@ public class CommandBusTests
[Test]
public void Send_WithNullCommand_Should_ThrowArgumentNullException()
{
- Assert.Throws(() => _commandBus.Send(null!));
+ Assert.Throws(() => _commandExecutor.Send(null!));
}
///
@@ -59,7 +59,7 @@ public class CommandBusTests
var input = new TestCommandInput { Value = 100 };
var command = new TestCommandWithResult(input);
- var result = _commandBus.Send(command);
+ var result = _commandExecutor.Send(command);
Assert.That(command.Executed, Is.True);
Assert.That(result, Is.EqualTo(200));
@@ -71,7 +71,7 @@ public class CommandBusTests
[Test]
public void Send_WithResult_AndNullCommand_Should_ThrowArgumentNullException()
{
- Assert.Throws(() => _commandBus.Send(null!));
+ Assert.Throws(() => _commandExecutor.Send(null!));
}
///
@@ -83,7 +83,7 @@ public class CommandBusTests
var input = new TestCommandInput { Value = 42 };
var command = new TestAsyncCommand(input);
- await _commandBus.SendAsync(command);
+ await _commandExecutor.SendAsync(command);
Assert.That(command.Executed, Is.True);
Assert.That(command.ExecutedValue, Is.EqualTo(42));
@@ -95,7 +95,7 @@ public class CommandBusTests
[Test]
public void SendAsync_WithNullCommand_Should_ThrowArgumentNullException()
{
- Assert.ThrowsAsync(async () => await _commandBus.SendAsync(null!));
+ Assert.ThrowsAsync(async () => await _commandExecutor.SendAsync(null!));
}
///
@@ -107,7 +107,7 @@ public class CommandBusTests
var input = new TestCommandInput { Value = 100 };
var command = new TestAsyncCommandWithResult(input);
- var result = await _commandBus.SendAsync(command);
+ var result = await _commandExecutor.SendAsync(command);
Assert.That(command.Executed, Is.True);
Assert.That(result, Is.EqualTo(200));
@@ -119,7 +119,7 @@ public class CommandBusTests
[Test]
public void SendAsync_WithResult_AndNullCommand_Should_ThrowArgumentNullException()
{
- Assert.ThrowsAsync(async () => await _commandBus.SendAsync(null!));
+ Assert.ThrowsAsync(async () => await _commandExecutor.SendAsync(null!));
}
}
diff --git a/GFramework.Core.Tests/query/AbstractAsyncQueryTests.cs b/GFramework.Core.Tests/query/AbstractAsyncQueryTests.cs
index 4cf020b..c908973 100644
--- a/GFramework.Core.Tests/query/AbstractAsyncQueryTests.cs
+++ b/GFramework.Core.Tests/query/AbstractAsyncQueryTests.cs
@@ -32,10 +32,10 @@ public class AbstractAsyncQueryTests
{
_container = new IocContainer();
_container.RegisterPlurality(new EventBus());
- _container.RegisterPlurality(new CommandBus());
- _container.RegisterPlurality(new QueryBus());
+ _container.RegisterPlurality(new CommandExecutor());
+ _container.RegisterPlurality(new QueryExecutor());
_container.RegisterPlurality(new DefaultEnvironment());
- _container.RegisterPlurality(new AsyncQueryBus());
+ _container.RegisterPlurality(new AsyncQueryExecutor());
_context = new ArchitectureContext(_container);
}
diff --git a/GFramework.Core.Tests/query/AsyncQueryBusTests.cs b/GFramework.Core.Tests/query/AsyncQueryExecutorTests.cs
similarity index 91%
rename from GFramework.Core.Tests/query/AsyncQueryBusTests.cs
rename to GFramework.Core.Tests/query/AsyncQueryExecutorTests.cs
index 2bdb793..f63cbdd 100644
--- a/GFramework.Core.Tests/query/AsyncQueryBusTests.cs
+++ b/GFramework.Core.Tests/query/AsyncQueryExecutorTests.cs
@@ -15,15 +15,15 @@ namespace GFramework.Core.Tests.query;
/// - 异步查询的上下文传递
///
[TestFixture]
-public class AsyncQueryBusTests
+public class AsyncQueryExecutorTests
{
[SetUp]
public void SetUp()
{
- _asyncQueryBus = new AsyncQueryBus();
+ _asyncQueryExecutor = new AsyncQueryExecutor();
}
- private AsyncQueryBus _asyncQueryBus = null!;
+ private AsyncQueryExecutor _asyncQueryExecutor = null!;
///
/// 测试SendAsync方法正确返回查询结果
@@ -34,7 +34,7 @@ public class AsyncQueryBusTests
var input = new TestAsyncQueryInput { Value = 10 };
var query = new TestAsyncQuery(input);
- var result = await _asyncQueryBus.SendAsync(query);
+ var result = await _asyncQueryExecutor.SendAsync(query);
Assert.That(result, Is.EqualTo(20));
}
@@ -45,7 +45,7 @@ public class AsyncQueryBusTests
[Test]
public void SendAsync_WithNullQuery_Should_ThrowArgumentNullException()
{
- Assert.ThrowsAsync(async () => await _asyncQueryBus.SendAsync(null!));
+ Assert.ThrowsAsync(async () => await _asyncQueryExecutor.SendAsync(null!));
}
///
@@ -57,7 +57,7 @@ public class AsyncQueryBusTests
var input = new TestAsyncQueryInput { Value = 5 };
var query = new TestAsyncStringQuery(input);
- var result = await _asyncQueryBus.SendAsync(query);
+ var result = await _asyncQueryExecutor.SendAsync(query);
Assert.That(result, Is.EqualTo("Result: 10"));
}
@@ -71,7 +71,7 @@ public class AsyncQueryBusTests
var input = new TestAsyncQueryInput { Value = 42 };
var query = new TestAsyncBooleanQuery(input);
- var result = await _asyncQueryBus.SendAsync(query);
+ var result = await _asyncQueryExecutor.SendAsync(query);
Assert.That(result, Is.True);
}
@@ -85,7 +85,7 @@ public class AsyncQueryBusTests
var input = new TestAsyncQueryInput { Value = 100 };
var query = new TestAsyncComplexQuery(input);
- var result = await _asyncQueryBus.SendAsync(query);
+ var result = await _asyncQueryExecutor.SendAsync(query);
Assert.That(result, Is.Not.Null);
Assert.That(result.Value, Is.EqualTo(200));
@@ -101,7 +101,7 @@ public class AsyncQueryBusTests
var input = new TestAsyncQueryInput { Value = 0 };
var query = new TestAsyncQueryWithException(input);
- Assert.ThrowsAsync(async () => await _asyncQueryBus.SendAsync(query));
+ Assert.ThrowsAsync(async () => await _asyncQueryExecutor.SendAsync(query));
}
///
@@ -113,8 +113,8 @@ public class AsyncQueryBusTests
var input = new TestAsyncQueryInput { Value = 10 };
var query = new TestAsyncQuery(input);
- var result1 = await _asyncQueryBus.SendAsync(query);
- var result2 = await _asyncQueryBus.SendAsync(query);
+ var result1 = await _asyncQueryExecutor.SendAsync(query);
+ var result2 = await _asyncQueryExecutor.SendAsync(query);
Assert.That(result1, Is.EqualTo(20));
Assert.That(result2, Is.EqualTo(20));
@@ -131,8 +131,8 @@ public class AsyncQueryBusTests
var query1 = new TestAsyncQuery(input1);
var query2 = new TestAsyncQuery(input2);
- var result1 = await _asyncQueryBus.SendAsync(query1);
- var result2 = await _asyncQueryBus.SendAsync(query2);
+ var result1 = await _asyncQueryExecutor.SendAsync(query1);
+ var result2 = await _asyncQueryExecutor.SendAsync(query2);
Assert.That(result1, Is.EqualTo(20));
Assert.That(result2, Is.EqualTo(40));
diff --git a/GFramework.Core.Tests/query/QueryBusTests.cs b/GFramework.Core.Tests/query/QueryExecutorTests.cs
similarity index 91%
rename from GFramework.Core.Tests/query/QueryBusTests.cs
rename to GFramework.Core.Tests/query/QueryExecutorTests.cs
index 84416f4..06a2770 100644
--- a/GFramework.Core.Tests/query/QueryBusTests.cs
+++ b/GFramework.Core.Tests/query/QueryExecutorTests.cs
@@ -8,7 +8,7 @@ namespace GFramework.Core.Tests.query;
/// 查询总线测试类,用于测试QueryBus的功能和异常处理
///
[TestFixture]
-public class QueryBusTests
+public class QueryExecutorTests
{
///
/// 测试设置方法,在每个测试方法执行前初始化查询总线实例
@@ -16,10 +16,10 @@ public class QueryBusTests
[SetUp]
public void SetUp()
{
- _queryBus = new QueryBus();
+ _queryExecutor = new QueryExecutor();
}
- private QueryBus _queryBus = null!;
+ private QueryExecutor _queryExecutor = null!;
///
/// 测试Send方法是否能正确返回查询结果
@@ -31,7 +31,7 @@ public class QueryBusTests
var input = new TestQueryInput { Value = 10 };
var query = new TestQuery(input);
- var result = _queryBus.Send(query);
+ var result = _queryExecutor.Send(query);
Assert.That(result, Is.EqualTo(20));
}
@@ -43,7 +43,7 @@ public class QueryBusTests
[Test]
public void Send_WithNullQuery_Should_ThrowArgumentNullException()
{
- Assert.Throws(() => _queryBus.Send(null!));
+ Assert.Throws(() => _queryExecutor.Send(null!));
}
///
@@ -56,7 +56,7 @@ public class QueryBusTests
var input = new TestQueryInput { Value = 5 };
var query = new TestStringQuery(input);
- var result = _queryBus.Send(query);
+ var result = _queryExecutor.Send(query);
Assert.That(result, Is.EqualTo("Result: 10"));
}
diff --git a/GFramework.Core.Tests/state/StateMachineSystemTests.cs b/GFramework.Core.Tests/state/StateMachineSystemTests.cs
index b41ba5e..632cf6b 100644
--- a/GFramework.Core.Tests/state/StateMachineSystemTests.cs
+++ b/GFramework.Core.Tests/state/StateMachineSystemTests.cs
@@ -50,10 +50,10 @@ public class StateMachineSystemTests
LoggerFactoryResolver.Provider.CreateLogger(nameof(StateMachineSystemTests)));
container.RegisterPlurality(_eventBus);
- container.RegisterPlurality(new CommandBus());
- container.RegisterPlurality(new QueryBus());
+ container.RegisterPlurality(new CommandExecutor());
+ container.RegisterPlurality(new QueryExecutor());
container.RegisterPlurality(new DefaultEnvironment());
- container.RegisterPlurality(new AsyncQueryBus());
+ container.RegisterPlurality(new AsyncQueryExecutor());
_context = new ArchitectureContext(container);
diff --git a/GFramework.Core.Tests/utility/AbstractContextUtilityTests.cs b/GFramework.Core.Tests/utility/AbstractContextUtilityTests.cs
index 61eea3b..8339e2c 100644
--- a/GFramework.Core.Tests/utility/AbstractContextUtilityTests.cs
+++ b/GFramework.Core.Tests/utility/AbstractContextUtilityTests.cs
@@ -32,10 +32,10 @@ public class AbstractContextUtilityTests
{
_container = new IocContainer();
_container.RegisterPlurality(new EventBus());
- _container.RegisterPlurality(new CommandBus());
- _container.RegisterPlurality(new QueryBus());
+ _container.RegisterPlurality(new CommandExecutor());
+ _container.RegisterPlurality(new QueryExecutor());
_container.RegisterPlurality(new DefaultEnvironment());
- _container.RegisterPlurality(new AsyncQueryBus());
+ _container.RegisterPlurality(new AsyncQueryExecutor());
_context = new ArchitectureContext(_container);
}
diff --git a/GFramework.Core/architecture/ArchitectureContext.cs b/GFramework.Core/architecture/ArchitectureContext.cs
index a9776ec..5d43303 100644
--- a/GFramework.Core/architecture/ArchitectureContext.cs
+++ b/GFramework.Core/architecture/ArchitectureContext.cs
@@ -61,8 +61,8 @@ public class ArchitectureContext(IIocContainer container) : IArchitectureContext
public TResult SendQuery(IQuery query)
{
if (query == null) throw new ArgumentNullException(nameof(query));
- var queryBus = GetOrCache();
- if (queryBus == null) throw new InvalidOperationException("IQueryBus not registered");
+ var queryBus = GetOrCache();
+ if (queryBus == null) throw new InvalidOperationException("IQueryExecutor not registered");
return queryBus.Send(query);
}
@@ -75,8 +75,8 @@ public class ArchitectureContext(IIocContainer container) : IArchitectureContext
public async Task SendQueryAsync(IAsyncQuery query)
{
if (query == null) throw new ArgumentNullException(nameof(query));
- var asyncQueryBus = GetOrCache();
- if (asyncQueryBus == null) throw new InvalidOperationException("IAsyncQueryBus not registered");
+ var asyncQueryBus = GetOrCache();
+ if (asyncQueryBus == null) throw new InvalidOperationException("IAsyncQueryExecutor not registered");
return await asyncQueryBus.SendAsync(query);
}
@@ -125,7 +125,7 @@ public class ArchitectureContext(IIocContainer container) : IArchitectureContext
public void SendCommand(ICommand command)
{
ArgumentNullException.ThrowIfNull(command);
- var commandBus = GetOrCache();
+ var commandBus = GetOrCache();
commandBus?.Send(command);
}
@@ -138,8 +138,8 @@ public class ArchitectureContext(IIocContainer container) : IArchitectureContext
public TResult SendCommand(ICommand command)
{
ArgumentNullException.ThrowIfNull(command);
- var commandBus = GetOrCache();
- if (commandBus == null) throw new InvalidOperationException("ICommandBus not registered");
+ var commandBus = GetOrCache();
+ if (commandBus == null) throw new InvalidOperationException("ICommandExecutor not registered");
return commandBus.Send(command);
}
@@ -150,8 +150,8 @@ public class ArchitectureContext(IIocContainer container) : IArchitectureContext
public async Task SendCommandAsync(IAsyncCommand command)
{
ArgumentNullException.ThrowIfNull(command);
- var commandBus = GetOrCache();
- if (commandBus == null) throw new InvalidOperationException("ICommandBus not registered");
+ var commandBus = GetOrCache();
+ if (commandBus == null) throw new InvalidOperationException("ICommandExecutor not registered");
await commandBus.SendAsync(command);
}
@@ -164,8 +164,8 @@ public class ArchitectureContext(IIocContainer container) : IArchitectureContext
public async Task SendCommandAsync(IAsyncCommand command)
{
ArgumentNullException.ThrowIfNull(command);
- var commandBus = GetOrCache();
- if (commandBus == null) throw new InvalidOperationException("ICommandBus not registered");
+ var commandBus = GetOrCache();
+ if (commandBus == null) throw new InvalidOperationException("ICommandExecutor not registered");
return await commandBus.SendAsync(command);
}
diff --git a/GFramework.Core/architecture/ArchitectureServices.cs b/GFramework.Core/architecture/ArchitectureServices.cs
index 16521a4..563ee8a 100644
--- a/GFramework.Core/architecture/ArchitectureServices.cs
+++ b/GFramework.Core/architecture/ArchitectureServices.cs
@@ -7,7 +7,6 @@ using GFramework.Core.command;
using GFramework.Core.events;
using GFramework.Core.ioc;
using GFramework.Core.query;
-using IAsyncQueryBus = GFramework.Core.Abstractions.query.IAsyncQueryBus;
namespace GFramework.Core.architecture;
@@ -19,12 +18,12 @@ public class ArchitectureServices : IArchitectureServices
///
/// 异步查询总线实例
///
- private readonly IAsyncQueryBus _asyncQueryBus;
+ private readonly IAsyncQueryExecutor _asyncQueryExecutor;
///
- /// 命令总线实例
+ /// 命令执行器实例
///
- private readonly ICommandBus _commandBus;
+ private readonly ICommandExecutor _commandExecutor;
///
/// 事件总线实例
@@ -32,14 +31,19 @@ public class ArchitectureServices : IArchitectureServices
private readonly IEventBus _eventBus;
///
- /// 查询总线实例
+ /// 同步查询执行器实例
///
- private readonly IQueryBus _queryBus;
+ private readonly IQueryExecutor _queryExecutor;
+ ///
+ /// 架构上下文对象
+ ///
private IArchitectureContext _context = null!;
///
/// 构造函数,初始化架构服务
+ /// 初始化依赖注入容器,并创建事件总线、命令执行器、查询执行器和异步查询执行器的实例,
+ /// 然后将这些服务注册到容器中。
///
public ArchitectureServices()
{
@@ -47,15 +51,15 @@ public class ArchitectureServices : IArchitectureServices
// 创建服务实例
_eventBus = new EventBus();
- _commandBus = new CommandBus();
- _queryBus = new QueryBus();
- _asyncQueryBus = new AsyncQueryBus();
+ _commandExecutor = new CommandExecutor();
+ _queryExecutor = new QueryExecutor();
+ _asyncQueryExecutor = new AsyncQueryExecutor();
// 将服务注册到容器
Container.RegisterPlurality(_eventBus);
- Container.RegisterPlurality(_commandBus);
- Container.RegisterPlurality(_queryBus);
- Container.RegisterPlurality(_asyncQueryBus);
+ Container.RegisterPlurality(_commandExecutor);
+ Container.RegisterPlurality(_queryExecutor);
+ Container.RegisterPlurality(_asyncQueryExecutor);
}
///
@@ -64,24 +68,24 @@ public class ArchitectureServices : IArchitectureServices
public IIocContainer Container { get; }
///
- /// 获取类型事件系统
+ /// 获取事件总线实例
///
public IEventBus EventBus => _eventBus;
///
- /// 获取命令总线
+ /// 获取命令执行器实例
///
- public ICommandBus CommandBus => _commandBus;
+ public ICommandExecutor CommandExecutor => _commandExecutor;
///
- /// 获取查询总线
+ /// 获取同步查询执行器实例
///
- public IQueryBus QueryBus => _queryBus;
+ public IQueryExecutor QueryExecutor => _queryExecutor;
///
- /// 获取异步查询总线
+ /// 获取异步查询执行器实例
///
- public IAsyncQueryBus AsyncQueryBus => _asyncQueryBus;
+ public IAsyncQueryExecutor AsyncQueryExecutor => _asyncQueryExecutor;
///
/// 设置架构上下文
@@ -101,4 +105,4 @@ public class ArchitectureServices : IArchitectureServices
{
return _context;
}
-}
\ No newline at end of file
+}
diff --git a/GFramework.Core/command/CommandBus.cs b/GFramework.Core/command/CommandExecutor.cs
similarity index 91%
rename from GFramework.Core/command/CommandBus.cs
rename to GFramework.Core/command/CommandExecutor.cs
index b7d4215..d9b5d9c 100644
--- a/GFramework.Core/command/CommandBus.cs
+++ b/GFramework.Core/command/CommandExecutor.cs
@@ -4,9 +4,10 @@ using IAsyncCommand = GFramework.Core.Abstractions.command.IAsyncCommand;
namespace GFramework.Core.command;
///
-/// 命令总线实现类,用于发送和执行命令
+/// 表示一个命令执行器,用于执行命令操作。
+/// 该类实现了 ICommandExecutor 接口,提供命令执行的核心功能。
///
-public sealed class CommandBus : ICommandBus
+public sealed class CommandExecutor : ICommandExecutor
{
///
/// 发送并执行无返回值的命令
diff --git a/GFramework.Core/query/AsyncQueryBus.cs b/GFramework.Core/query/AsyncQueryExecutor.cs
similarity index 91%
rename from GFramework.Core/query/AsyncQueryBus.cs
rename to GFramework.Core/query/AsyncQueryExecutor.cs
index 787697e..7f57ab3 100644
--- a/GFramework.Core/query/AsyncQueryBus.cs
+++ b/GFramework.Core/query/AsyncQueryExecutor.cs
@@ -5,7 +5,7 @@ namespace GFramework.Core.query;
///
/// 异步查询总线实现,用于处理异步查询请求
///
-public sealed class AsyncQueryBus : IAsyncQueryBus
+public sealed class AsyncQueryExecutor : IAsyncQueryExecutor
{
///
/// 异步发送查询请求并返回结果
diff --git a/GFramework.Core/query/QueryBus.cs b/GFramework.Core/query/QueryBus.cs
deleted file mode 100644
index ce1f698..0000000
--- a/GFramework.Core/query/QueryBus.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using GFramework.Core.Abstractions.query;
-
-namespace GFramework.Core.query;
-
-///
-/// 查询总线实现,负责执行查询并返回结果
-///
-public sealed class QueryBus : IQueryBus
-{
- ///
- /// 执行指定的查询并返回结果
- ///
- /// 查询结果的类型
- /// 要执行的查询对象
- /// 查询执行结果
- public TResult Send(IQuery query)
- {
- // 验证查询参数不为null
- ArgumentNullException.ThrowIfNull(query);
-
- return query.Do();
- }
-}
\ No newline at end of file
diff --git a/GFramework.Core/query/QueryExecutor.cs b/GFramework.Core/query/QueryExecutor.cs
new file mode 100644
index 0000000..d0ac3c7
--- /dev/null
+++ b/GFramework.Core/query/QueryExecutor.cs
@@ -0,0 +1,27 @@
+using GFramework.Core.Abstractions.query;
+
+namespace GFramework.Core.query;
+
+
+///
+/// QueryExecutor 类负责执行查询操作,实现 IQueryExecutor 接口。
+/// 该类是密封的,防止被继承。
+///
+public sealed class QueryExecutor : IQueryExecutor
+{
+ ///
+ /// 执行指定的查询并返回结果。
+ /// 该方法通过调用查询对象的 Do 方法来获取结果。
+ ///
+ /// 查询结果的类型。
+ /// 要执行的查询对象,必须实现 IQuery<TResult> 接口。
+ /// 查询执行的结果,类型为 TResult。
+ public TResult Send(IQuery query)
+ {
+ // 验证查询参数不为 null,如果为 null 则抛出 ArgumentNullException 异常
+ ArgumentNullException.ThrowIfNull(query);
+
+ // 调用查询对象的 Do 方法执行查询并返回结果
+ return query.Do();
+ }
+}