0%

java | 利用面向对象提高逻辑清晰度

有的时候,我们会遇到这种场景,在调用一个实例的方法后可能会传入很多参数。

但是,传入的参数来源一般有两个。

  • 构造函数传入
  • 方法参数传入

举一个简单的例子说明。

构造函数传入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Data
public class Client{
private String clientIP;
private int port;

public Client(String clientIP,int port){
setClientIP(clientIP);
setPort(port);
}

public void getInfo(){
deal(getClientIP,getPort);
}

...
}

...

Client client = new Client(IP,port);
client.getInfo();

方法参数传入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Data
public class Client{

public Client(){
}

public void getInfo(String clientIP,int port){
deal(getClientIP,getPort);
}

...
}

...

Client client = new Client();
client.getInfo(IP,port);

对于构造函数而言,整个实例和其属性更像是一个整体,所以,以构造函数进行初始化的变量,关系应该为 一对一 ,即一个实例中,所传递进去的变量不应该改变。所以,变量的初始化应该在构造函数中,并且,后续应只提供 get 方法,不应该提供 set 方法。

对于方法传参而言,所涉及的变量来源于外部,其关系应该为 一对多 ,即一个实例中,传递的参数可以有多种,这样的话,变量通常不应该在构造函数给出「个别场景个别分析」。

请我喝杯咖啡吧~