Oop 将责任与依赖性分离到一个中心;制作人;对象
假设你有一个与平台或其他东西有某种连接的对象。例如,用于连接到远程网站的对象,您可以在其中控制各种机器人 producer对象用于通过表示这些机器人的连接获取几十个实例。这些对象依赖于第一个对象,因为任何操作都需要通过连接。因此,任何本地代码都只是通过producer对象进行调用 机器人连接机器人对象 对于这些实例中的每一个,原始对象都可以有一定数量的实用程序方法,这些方法将把更改中继回来。然而,这可能会把它变成一个“上帝”类,做任何事情 在这种情况下,你会如何划分责任Oop 将责任与依赖性分离到一个中心;制作人;对象,oop,Oop,假设你有一个与平台或其他东西有某种连接的对象。例如,用于连接到远程网站的对象,您可以在其中控制各种机器人 producer对象用于通过表示这些机器人的连接获取几十个实例。这些对象依赖于第一个对象,因为任何操作都需要通过连接。因此,任何本地代码都只是通过producer对象进行调用 机器人连接机器人对象 对于这些实例中的每一个,原始对象都可以有一定数量的实用程序方法,这些方法将把更改中继回来。然而,这可能会把它变成一个“上帝”类,做任何事情 在这种情况下,你会如何划分责任 附言:请随意推荐一个更好
附言:请随意推荐一个更好的标题。您所描述的内容听起来非常类似于:
- 有一个
界面机器人
- 服务器通过一个具体的实现来控制真正的机器人,比如说
RealRobot
- 客户端有一个
对象,该对象可以返回实现连接
接口的代理,但通过连接将调用转发给真正的机器人机器人
连接
对象本身只提供基本的通信方法(例如发送和接收数据),不包含您描述的任何“实用方法”。代理实现将利用这些通信方法将调用中继到服务器
下面是一个例子:
共享接口:
public interface Robot {
void move(...);
}
服务器实现:
public class RealRobot implements Robot { ... }
客户端库:
public class Connection {
public Robot getRobot(int id) {
return new RobotProxy(id, this);
}
// ...
// methods for sending and receiving data
// ...
}
public class RobotProxy implements Robot {
private final int id;
private final Connection conn;
public RobotProxy(int id, Connection conn) {
this.id = id;
this.conn = conn;
}
public void move(...) {
conn.send("move", id, ...);
}
}
您所描述的内容与以下内容非常相似:
- 有一个
界面机器人
- 服务器通过一个具体的实现来控制真正的机器人,比如说
RealRobot
- 客户端有一个
对象,该对象可以返回实现连接
接口的代理,但通过连接将调用转发给真正的机器人机器人
连接
对象本身只提供基本的通信方法(例如发送和接收数据),不包含您描述的任何“实用方法”。代理实现将利用这些通信方法将调用中继到服务器
下面是一个例子:
共享接口:
public interface Robot {
void move(...);
}
服务器实现:
public class RealRobot implements Robot { ... }
客户端库:
public class Connection {
public Robot getRobot(int id) {
return new RobotProxy(id, this);
}
// ...
// methods for sending and receiving data
// ...
}
public class RobotProxy implements Robot {
private final int id;
private final Connection conn;
public RobotProxy(int id, Connection conn) {
this.id = id;
this.conn = conn;
}
public void move(...) {
conn.send("move", id, ...);
}
}
您在Facebook实例中提到了一个现有的“用户对象”以及特定于用户的实用程序方法——您能详细说明一下吗?一些示例代码可能也会有所帮助。@casablanca I实际上是错的。当前的graph API只返回用户的id。其他请求通过路径完成,如
/me/likes/PAGE\u ID
。所以这是不适用的。我将编辑我的问题。好的。我重新提出了这个问题。希望更清楚。想一想,我可能只是简单地描述了数据和服务层的等价物或一些经典模式。你在Facebook实例中提到了一个现有的“用户对象”以及特定于用户的实用程序方法,你能详细说明一下吗?一些示例代码可能也会有所帮助。@casablanca I实际上是错的。当前的graph API只返回用户的id。其他请求通过路径完成,如/me/likes/PAGE\u ID
。所以这是不适用的。我将编辑我的问题。好的。我重新提出了这个问题。希望更清楚。想一想,我可能只是简单地描述了数据和服务层的等价物或一些经典模式。我很想看到可能的答案。