状态设计模式-传递对象
State design pattern - Passing Objects
我有一个3个状态的状态设计模式实现:
State1::DoTask(){...}
State2::DoTask(){...}
State3::DoTask(){...}
这三个状态都需要使用两个已经实例化的类
。
State1::DoTask()
{
sensor->GetData(...)
server->Send(buf,size)
}
如何传递这2类指针对象到State1, State2和State3的最佳方式?
我想有两个选择:
1)传感器和服务器类可以是一个单例:
State1::DoTask()
{
sensor = Sensor::GetInstance();
server = Server::GetInstance();
....
}
2)通过使用其他对象保存类指针传递:
class ComClasses
{
Sensor *sensor;
Server *server;
}
State1::DoTask(ComClasses *c)
{
....
}
在你看来,最好的方法是什么?有没有更好的解决方案?
问好,
您也可以在初始化状态时这样做。
State1 state1( sensor, server );
State2 state2( sensor, server );
State3 state3( sensor, server );
然后DoTask接口方法,也就是你的客户端方法,不应该关心每个State类的实现。每个州将使用自己的信息来实现它。
state1.DoTask();
...
评论你的解决方案,我想我更喜欢单例。如果您发现每个状态都需要使用一个新对象,您可能会继续添加参数。你的第二个解决方案解决了这个问题,但你可能会把对象传递给不需要使用它们的状态。
但可能初始化是最好的
相关文章:
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 需要实例化不同类/对象并在启动时确定的硬件插槽的设计模式
- 具有多个继承共享一个资源的对象 - 寻找良好的设计模式
- 是否有一种设计模式或面向对象的基本原则来处理这种共享资源的情况?
- 设计模式中对象中的过程(方法和操作)的状态
- 哪种设计模式仅出于代理目的而组成的对象与之相关
- 从对象成员函数内部删除操作的技术 /设计模式
- 共享对象工厂的设计模式
- 用于对基于I/O的对象执行一系列操作的设计模式
- 数据库访问对象设计模式
- 设计模式:可重用的面向对象软件的元素
- 如何在不使用非构造函数的方法的情况下应用singleton设计模式来返回类对象
- 不同的基本对象过程使用什么设计模式
- 用于创建具有const或非const属性的对象的设计模式
- 设计模式-C++对象生命周期评测
- 设计模式-在C++中返回对象集合的函数
- 为返回对象和NRVO的方法设计模式
- 对象池设计模式问题
- C++设计模式,用于在另一个类中使用抽象类对象
- 状态设计模式-传递对象