有的时候,我们会遇到这种场景,在调用一个实例的方法后可能会传入很多参数。
但是,传入的参数来源一般有两个。
举一个简单的例子说明。
构造函数传入
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
方法。
对于方法传参而言,所涉及的变量来源于外部,其关系应该为 一对多 ,即一个实例中,传递的参数可以有多种,这样的话,变量通常不应该在构造函数给出「个别场景个别分析」。