第13条 使类和成员的可访问性最小
心得体会:
本条主要是让程序员在编写类和成员变量的时候,尽量去定义到最小的访问权限,此条比较简单
第14条 在公有类中使用访问方法而非公有域
public class student{
public String username;
public String password;
}
通过本条的学习,重新编写此类
public class student{
private String username;
private String password;
public void setUsername(String username){
this.username=username;
}
public void setPassword(String password){
this.password=password;
}
public String getUsername(){
return this.username;
}
public String getPassword(){
return this.password;
}
}
第15条 使可变性最小化
此条就是创建不可变类的方法:不可变类就是在创建实例之后就不能被修改的类。每个实例中包含的所有信息都必须在创建该实例的时候就提供好,并且在生命周期中固定不变的。
定位不可变的方法需要遵循一下几条:
1.不要提供任何可以修改对象的方法
2.保证类不会被扩展
3.使用所有的域都是final的
4.使所有的域都是私有的
5.确保对于任何可变组件的互斥访问
java平台类中包含许多不可变的类(String,BigInteger,BigDecimal)
public final class Complex{
private final double re;
private final double im;
public Complex(double re,double im){
this.re=re;
this.im=im;
}
@override
public String toString(){
return "("+re+" and "+im+")";
}
}
第16条 复合优先于继承
心得体会:
当此类不是为了继承而实现的,当继承了此类后,当超类出现变化后,继承他的子类可能就会用意想不到的事情
public class ForwardingSet<E> implements Set<E>{
private final Set<E> s;
public Forwarding(Set<E> s){
this.s=s;
}
public void clear(){
s.clear();
}
public boolean contains(Object o){
s.contains(o);
}
public boolean isEmpty(){
s.isEmpty();
}
}
public class InstrumentedSet<E> extends ForwardingSet< E>{
public InstrumentedSet(Set<E> s){
super(s);
}
public boolean add(E e){
return super.add(e);
}
}
而使用复合类实现接口的话就能解决继承出现的超类修改,子类不能使用的问题
网友评论