```java // 状态接口 interface TCPState { void open(); // 建立连接 void close(); // 关闭连接 void listen(); // 监听连接 } // 建立连接状态 class EstablishedState implements TCPState { @Override public void open() { System.out.println("TCP connection is already established."); } @Override public void close() { System.out.println("Closing the TCP connection."); // 切换到关闭状态 } @Override public void listen() { System.out.println("TCP connection is already established and listening."); } } // 监听连接状态 class ListeningState implements TCPState { @Override public void open() { System.out.println("TCP connection is already in listening mode."); } @Override public void close() { System.out.println("Closing the TCP connection."); // 切换到关闭状态 } @Override public void listen() { System.out.println("TCP connection is already listening."); } } // 关闭连接状态 class ClosedState implements TCPState { @Override public void open() { System.out.println("Establishing a new TCP connection."); // 切换到建立状态 } @Override public void close() { System.out.println("TCP connection is already closed."); } @Override public void listen() { System.out.println("TCP connection is closed, cannot listen."); } } // TCP连接类 class TCPConnection { private TCPState state; public TCPConnection() { this.state = new ClosedState(); // 默认为关闭状态 } public void setState(TCPState state) { this.state = state; } public void open() { state.open(); } public void close() { state.close(); } public void listen() { state.listen(); } } // 测试类 public class Main { public static void main(String[] args) { TCPConnection connection = new TCPConnection(); connection.open(); connection.listen(); connection.close(); } } ``` 额外注意的地方: 1. 确保状态之间的切换逻辑正确,避免状态转换错误导致对象行为异常。 2. 每个状态类要实现对应的接口方法,并正确处理各种状态下的行为。 3. 测试时需验证不同状态下对象的行为是否符合预期。 [2024-12-19 22:19:57 | AI写代码神器 | 1541点数解答]