Socket和SocketImpl两个类的关系是什么?(30分)

  • 主题发起人 主题发起人 touip
  • 开始时间 开始时间
T

touip

Unregistered / Unconfirmed
GUEST, unregistred user!
SocketImpl
public abstract class SocketImpl implements SocketOptions {
/**
* The actual Socket object.
*/
Socket socket = null;
ServerSocket serverSocket = null;
Socket
public class Socket
{
SocketImpl impl;
...
}
不知道这是哪种设计模式,不知有哪个高手知道,请告知
 
是C++的东西,说实话,我不懂。
为一个类体系(hierarchy)定义接口,并将具体实现交给子类。抽象类(Abstract Class)
在保留类的多态性的同时,让子类可以重新定义接口的实现。

 
SocketImpl 类全部是 Native 方法,Sun 把 这些涉及到平台相关的操作另外独立出来,
只是给你一个Socket的应用类使用。换句话说就是,Socket 是平台无关的,而SocketImpl
在不同的平台有不同的实现
 
不是C++,是Java。
但一般抽象类的用法是为了让子类实现具体的行为。
可是在抽象类SocketImpl和Socket类中都使用对方的类实例,它们之间的相互引用或者叫
委托的作用是什么,听S3D4讲应该有道理,可为什么这样使用呢?
 
具体的源代码我没有怎么看,我只是想当然的,Sun 的代码很多地方非常晦涩,估计就是
用了太多模式的原因,而且我也不是很了解设计模式,恐怕小生无能为力了
 
帮忙up,谢谢
 
简单工厂
,socket内部已由产商提供了个SocketImpl的子类,
SocketImpl实现的主要是与平台相关的东东,当你觉得产商提供的不能
满足你的要求时,你可以重写SocketImpl,然后Socket.setSocketImplFactory
 
同意S3D4和spear的说法,有机会看一看《设计模式》是抽象工厂模式
 
多人接受答案了。
 
后退
顶部