命令模式-控制台程序
using System;
using System.Threading;
using System.Collections.Generic;
// 设备模拟类
class Device
{
private string name;
public Device(string name)
{
this.name = name;
}
public void ExecuteCommand()
{
Console.WriteLine($"Device {name} is executing the command.");
// 模拟设备执行命令的操作
Thread.Sleep(2000);
Console.WriteLine($"Device {name} has completed the command.");
}
}
// 命令接口
interface ICommand
{
void Execute();
}
// 具体命令类
class DeviceCommand : ICommand
{
private Device device;
public DeviceCommand(Device device)
{
this.device = device;
}
public void Execute()
{
device.ExecuteCommand();
}
}
class Program
{
static void Main(string[] args)
{
// 模拟多个设备
List<Device> devices = new List<Device>
{
new Device("Device1"),
new Device("Device2"),
new Device("Device3"),
new Device("Device4")
};
// 创建命令对象
ICommand[] commands = new ICommand[devices.Count];
for (int i = 0; i < devices.Count; i++)
{
commands[i] = new DeviceCommand(devices[i]);
}
// 使用线程池执行命令
ThreadPool.QueueUserWorkItem(state =>
{
foreach (var command in commands)
{
command.Execute();
}
});
// 模拟主线程的其他工作
Console.WriteLine("Main thread is doing some other work...");
// 等待所有设备操作完成
Thread.Sleep(5000);
Console.WriteLine("All device commands have been executed.");
}
}