封装使用的一个小例子

范例(Examples)

 

本例从两个classes开始,代表「人」的Person和代表「部门」的Department:

                                       

 class Person {

   Department _department;

 

   public Department getDepartment() {

       return _department;

   }

   public void setDepartment(Department arg) {

       _department = arg;

   }

 }

 

 class Department {

   private String _chargeCode;

   private Person _manager;

 

   public Department (Person manager) {

       _manager = manager;

   }

 

   public Person getManager() {

       return _manager;

   }

 ...

 

如果客户希望知道某人的经理是谁,他必须先取得Department对象:

 

 manager = john.getDepartment().getManager();

 

这样的编码就是对客户揭露了Department的工作原理,于是客户知道:Department用以追踪「经理」这条信息。如果对客户隐藏Department,可以减少耦合(coupling)。 为了这一目的,我在Person中建立一个简单的委托函数:

 

   public Person getManager() {

       return _department.getManager();

   }

 

现在,我得修改Person的所有客户,让它们改用新函数:

 

 manager = john.getManager();

 

只要完成了对Department所有函数的委托关系,并相应修改了Person的所有客 户,我就可以移除Person中的访问函数getDepartment()了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值