设计模式 接口隔离原则
用类图说明
然后书写代码清单
public interface IPettyGirl{
// 面孔
public void goodLooking();
// 身材
public void niceFigure();
// 气质
public void greatTemperament();
}
接着,使用具体的类实现
public class PettyGirl implements IPettyGirl{
private String name;
// 书写名字
public PettyGirl(String _name){
this.name = _name;
}
// 脸
public void goodLooking(){
}
// 气质
public void niceFigure(){
}
// 身材
public void niceFigure(){
}
}
对星探定义
public abstratc class AbstractSearcher{
protected IPettyGirl pettyGirl;
public AbstractSearcher(IPettyGirl _pettyGirl){
this.pettyGirl = _pettyGirl;
}
// 定义搜索抽象类
public abstract void show();
}
然后对星探进行实现
public class Searcher extends AbstractSearcher{
public Searcher(PettyGirl _pettyGirl){
super(_pettyGirl); // 调用抽象类中的构造方法进行初始化
}
// 展示
public void show(){
// 面容
super.pettyGirl.goodLooking(); // 调用传入的对象的方法
// 身材
super.pettyGirl.niceFigure();
// 气质
super.pettyGirl.greatTemperament();
}
}
接着书写场景
public class Client{
public static void main(String[] args){
IPettyGirl yanYan = new PettyGirl("");
AbstractSearcher searcher = new Searcher(yanYan);
searcher.show();
}
}
接着,要进行更改了。对好看的定义,发生了改变,那么就应该改变PettyGirl中的内容,但是已经在接口中定义了。那么就有问题了。即,接口承担的内容过多导致
接口隔离原则
发现问题了。接口被过度的封装了,那么就要进行拆分。
// 接着对人进行定义
public interface IGoodBodyGirl{
// 面孔
public void goodLooking();
// 要有身材
public void niceFigure();
}
public interface IGreatTempramentGirl{
// 气质
public void greatTemperament();
}
接着定义标准的
public class PettyGirl implements IGoodBodyGirl, IGreatTempramentGirl{
private String name;
// 名字
public PettyGirl(String _name){
this.name = _name;
}
// 脸
public void goodLooking(){
}
// 气质
public void greatTemperament(){
}
// 身材
public void greatTemperament(){
}
}
总结
接口要承担的功能要最小。即,要满足单一原则。
接口要高内聚 即 接口中少公布public方法,即,接口要承担的职责要最小,最核心
举例,要定制图书管理系统
拆分成两个接口,该接口一个对内,一个对外,保证了安全。
即,一个接口只服务于一个子模块和业务逻辑
www.iming.info