专栏首页mySoul设计模式 接口隔离原则
原创

设计模式 接口隔离原则

设计模式 接口隔离原则

用类图说明

然后书写代码清单

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方法,即,接口要承担的职责要最小,最核心

举例,要定制图书管理系统

拆分成两个接口,该接口一个对内,一个对外,保证了安全。

即,一个接口只服务于一个子模块和业务逻辑

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 设计模式 里氏替换原则

    在场景中,三毛需要什么枪支,就直接new 出一个枪支即可,然后其内通过抽象类获取到对象,然后对齐进行修饰

    mySoul
  • 设计模式-行为型模式-命令模式

    客户每次都要单独找一个,非常复杂,设置一个负责人,负责和客户和需求,美工之间的连接。

    mySoul
  • 代理模式

    mySoul
  • Java面向对象之抽象类,接口

    抽象类: 含有抽象方法的类被声明为抽象类 抽象方法由子类去实现 含有抽象方法的类必须被声明为抽象类 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中...

    二十三年蝉
  • 小游戏——金庸奇侠传(JAVA,对面向对象的进一步了解)

    泰斗贤若如
  • 浅谈设计模式(二):装饰器模式|中介模式|原型模式

    装饰器模式可用来给一个类动态添加功能,将其装饰成一个新的类。这就是装饰器的概念。看到这里我们可能会想,要达到这种效果,我们用子类继承父类不就可以了吗? 没错装饰...

    外婆的彭湖湾
  • Java设计模式总汇二(小白也要飞)

    PS:上一篇我介绍了适配器设计模式、单例设计模式、静态代理设计模式、简单工厂设计模式,如果没有看过第一篇的小火鸡可以点这个看看http://www.cnblog...

    cMusketeer
  • JAVA初中级程序员笔试试题

    (多选题) 1.以下哪些不是Java保留字__________ A. private     B. Final    C. class    D. Thro...

    用户2192970
  • 设计模式

    静态内部类实现方式(也是一种赖加载方式) public class SingletonDemo04 { private static class Singl...

    海仔
  • 依赖注入容器-- Autofac

    Autofac---Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高...

    小世界的野孩子

扫码关注云+社区

领取腾讯云代金券