package com.cheng.zenofdesignpatterns.principle.isp;
import android.view.View;
import com.cheng.zenofdesignpatterns.ZoDPChapterBaseActivity;
public class ZoDPInterfaceSegregationPrincipleActivity extends ZoDPChapterBaseActivity {
@Override
protected void initData() {
mTitleTV.setText("接口隔离原则");
String content = "定义:\n" +
"接口的定义:\n" +
"- 实例接口(Object Interface)\n" +
"在Java中声明一个类,然后用new关键字产生一个实例,它是对一个类型的事物的" +
"描述,这是一种接口 -- Java中的类也是一种接口\n" +
"- 类接口(Class Interface)\n" +
"Java中经常使用的interface关键字定义的接口\n" +
"隔离的定义:\n" +
"- Clients should not be forced to depend upon interfaces that they " +
"don't use.(客户端不应该依赖它不需要的接口)\n" +
"- The dependency of one class to another one should depend on the " +
"smallest possible interface.(类间的依赖关系应该建立在最小的接口上)\n" +
"概括为一句话:建立单一接口,不要建立臃肿庞大的接口。在通俗一点讲:接口尽量" +
"细化,同时接口中的方法尽量少。\n" +
"注意 接口隔离原则与单一职责的审视角度是不相同的,单一职责要求的是类和接口" +
"职责单一,注重的是职责,这是业务逻辑上的划分,而接口隔离原则要求接口的方法" +
"尽量少。\n\n" +
"接口隔离原则是对接口进行规范约束,其包含以下4层含义:\n" +
"- 接口要尽量小\n" +
"根据接口隔离原则拆分接口时,首先必须满足单一职责原则\n" +
"- 接口要高内聚\n" +
"高内聚就是提高接口、类、模块的处理能力,减少对外的交互。具体到接口隔离原则就是," +
"要求在接口中尽量少公布public方法,接口是对外的承诺,承诺越少对系统的开发越有利," +
"变更的风险也就越少,同时也有利于降低成本\n" +
"- 定制服务\n" +
"定制服务就是单独为一个个体提供优良的服务。在做系统设计时也需要考虑对系统之间或" +
"模块之间的接口采用定制服务。采用定制服务就必然有一个要求:只提供访问者需要的方法\n" +
"- 接口设计是有限度的\n\n" +
"最佳实践:\n" +
"接口隔离原则是对接口的定义,同时也是对类的定义,接口和类尽量使用原子接口或原子类" +
"来组装。\n" +
"关于原子划分,可以根据以下几个规则来衡量:\n" +
"- 一个接口只服务于一个子模块或业务逻辑\n" +
"- 通过业务逻辑压缩接口中的public方法" +
"- 已经被污染了的接口,尽量去修改,若变更的风险较大,则采用适配器模式进行转化处理\n" +
"了解环境,拒绝盲从。环境不同,接口拆分的标准就不同";
mContentTV.setText(content);
}
public void onClick(View v) {
IGoodBodyGirl girl1 = new PettyGirl("嫣嫣");
AbstractSearcher searcher = new Searcher(girl1);
searcher.show();
IGreatTemperamentGirl girl2 = new PettyGirl("嫣嫣");
searcher = new Searcher(girl2);
searcher.show();
}
}