class ClientClass {
Person person = new Person()
person.doSomething()
}
class Person{
Department department = new Department()
department.doSomething()
}
解决方法
class ClientClass{
Server server = new Server()
server.doSomething()
}
class Server{
Delegate delegate = new Delegate()
void doSomething(){
delegate.doSomething()
}
}
//委托类其实隐藏在客户类里面
// 改变不会传播到客户端那边,因为它之后影响到服务端这边
class Delegate{
void doSomething(){...}
}
动机
关键在于封装
类应该尽量的使用其他的类
> manager = john.getDepartment().getManager();
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;
}
...
to
> manager = john.getManager();
class Person {
...
public Person getManager() {
return _department.getManager();
}
}
一个类通过代理干了太多的事情
让客户直接调用委托
class ClientClass {
Person person = new Person()
person.doSomething()
}
class Person{
Department department = new Department()
department.doSomething()
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-89441-10.html
事前已经经由外交途径警告过了
记忆深刻
这里有个小女孩很懂事