package com.cheng.zenofdesignpatterns.principle.lkp;
import android.view.View;
import com.cheng.zenofdesignpatterns.ZoDPChapterBaseActivity;
import java.util.ArrayList;
import java.util.List;
public class ZoDPLeastKnowledgePrincipleActivity extends ZoDPChapterBaseActivity {
@Override
protected void initData() {
mTitleTV.setText("最少知识原则(迪米特法则)");
String content = "定义:\n" +
"Only talk to your immediate friends.\n" +
"一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或" +
"调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系," +
"那是你的事情,我就知道你提供的这么多public方法,我就调用这么多,其他的我" +
"一概不关心。\n\n" +
"迪米特法则对类的低耦合提出了明确的要求,其包含以下4层含义:\n" +
"1. 只和朋友交流\n" +
"两个对象之间的耦合就成为朋友关系,这种关系的类型有很多,例如组合、聚合、依赖等\n" +
"2. 朋友间也是有距离的\n" +
"注意 迪米特法则要求类‘羞涩’一点,尽量不要对外公布太多的public方法和非静态的" +
"public变量,尽量内敛,多使用private、package-private、protected等访问权限\n" +
"3. 是自己的就是自己的\n" +
"如果一个方法放在本类中,既不增加类间关系,也对本类不产生负面影响,那就放置在本类中\n" +
"4. 谨慎使用Serializable\n\n" +
"最佳实践\n" +
"迪米特法则要求类间解耦,但解耦是有限度的,除非是计算机的最小单元--二进制的0和1." +
"那才是完全解耦,在实际的项目中,需要适度地考虑这个原则,别为了套用原则而做项目。" +
"原则只是提供参考,如果违背了这个原则,项目也未必会失败,这就需要大家在采用原则" +
"时反复度量,不遵循是不对的,严格执行就是‘过犹不及’。";
mContentTV.setText(content);
}
public void onClick(View v) {
// 体育老师让体育委员清点班上女生的人数
List<Girl> listGirl = new ArrayList<>();
for (int i = 0; i < 20; i++) {
listGirl.add(new Girl());
}
Teacher teacher = new Teacher();
teacher.commond(new GroupLeader(listGirl));
// 模拟软件安装
InstallSoftware invoker = new InstallSoftware();
invoker.installWizard(new Wizard());
}
}