计算机专业的学生都要使用电脑,下课需要关闭电脑 // 计算机类 public class Compute
计算机专业的学生都要使用电脑,下课需要关闭电脑
//
计算机类
public
class Computer
{
public
void
saveCurrentTask
(){
//
do something }
public
void
closeService
(){
//
do something }
public
void
closeScreen
(){
//
do something }
public
void
closePower
(){
//
do something }
public
void close
() {
saveCurrentTask
();
closeService
();
closeScreen
();
closePower
(); } }
26
实例
2
//
人
public class Person{
private
Computer c;
...
public
void
clickCloseButton
(){
//
现在你要开始关闭计算机
了
,
正常只需
要调用
close()
方法
即
可
//
但发现
Computer
方法
都是公开
的
,
于是写下以下
关闭的流程
:
c.saveCurrentTask
();
c.closePower
();
c.close
();
//
或是
以下的
操作
c.closePower
();
//
还可能是以下的操作
c.close
();
c.closePower
(); } }
27
实例
2
//
计算机
类
public
class Computer{
private
void
saveCurrentTask
(){ //do something }
private
void
closeService
(){ //do something }
private
void
closeScreen
(){ //do something }
private
void
closePower
(){ //do something }
public
void close
(){
saveCurrentTask
();
closeService
();
closeScreen
();
closePower
();
}
}
根据迪米特原则,我们需要减少对象之间的依赖关系,使得一个对象不需要知道太多关于其他对象的信息,可以通过中间对象来进行通信。因此,我们可以对上述代码进行优化:
计算机类只需要公开一个关闭方法,其它方法都设为私有,由计算机类自己来调用这些私有方法。Person类不需要知道计算机类的细节,只需要调用计算机类的关闭方法即可。
计算机类:
public class Computer {
private void saveCurrentTask() {
//do something
}
private void closeService() {
//do something
}
private void closeScreen() {
//do something
}
private void closePower() {
//do something
}
public void close() {
saveCurrentTask();
closeService();
closeScreen();
closePower();
}
}
Person类:
public class Person {
private Computer c;
...
public void clickCloseButton() {
c.close();
}
}
这样做可以减少对象之间的耦合,也方便了代码的维护。