标签:java
这一章节我们来聊聊为什么需要隐藏具体实现。
一般来说,编程分为类的创建者与类的使用者,创建者将一部分脆弱的代码隐藏起来,只暴露某些必须的方法给使用者,这样,创建者就可以根据需要修改隐藏部分,而不会影响使用者的调用。
为什么需要隐藏具体实现。
1)让使用者不能随意访问所有的代码。
例如:
package com.ray.ch01;
public class Bird {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
反面例子:
package com.ray.ch01;
public class Bird {
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
Bird bird = new Bird();
bird.name=null;
}
}
package com.ray.ch01;
public class Bird {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
if (name!=null) {
this.name = name;
}else {
System.out.println("名称不能为空");
}
}
public static void main(String[] args) {
Bird bird1 = new Bird();
bird1.setName(null);
Bird bird2 = new Bird();
bird2.setName("jack");
}
}
名称不能为空
上面的代码避免了名字为空的风险,隐藏了脆弱的代码,只暴露必须的代码方法。
2)让创建者可以随意修改隐藏的代码。
除了限制使用者,同时也方便创建者,我们只要返回相同的东西,中间怎么实现,随我们。
例如:
我们根据上面的代码进行改编。
package com.ray.ch01;
public class Bird {
private String name;
private String id;
private void setId() {
id = "123456";
}
public String getName() {
return name;
}
public void setName(String name) {
setId();
if (name != null) {
this.name = name;
} else {
System.out.println("名称不能为空");
}
}
public static void main(String[] args) {
Bird bird1 = new Bird();
bird1.setName(null);
Bird bird2 = new Bird();
bird2.setName("jack");
}
}
最后,本来应该还需要聊一下怎样隐藏具体实现,但是这个话题太宽泛,而且一般都是需要根据需求来做的,所以不做展开。总之一句话:需求决定隐藏什么具体实现。
总结:这一章节我们介绍了为什么需要隐藏具体实现。
这一章节到这里,谢谢。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:java
原文地址:http://blog.csdn.net/raylee2007/article/details/49150373