面向对象的设计原则_ 接口隔离原则面向对象的设计原则_ 接口隔离原则
动 机
动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动当我用程序的候,如果一个模包含多个子模,那我小心模做
出抽象。想模由一个,我可以把系抽象成一个接口。但是当我想动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动要添加一个新的模展程序,如果要添加的模只包含原系中的一些子模,动动动动动动动动动动动动动动动动动动动动动动动动动动动动动那就会动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动迫我接口中的所有方法,并且要写...
面向对象的设计原则_ 接口隔离原则
动 机
动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动当我用程序的候,如果一个模包含多个子模,那我小心模做
出抽象。想模由一个,我可以把系抽象成一个接口。但是当我想动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动要添加一个新的模展程序,如果要添加的模只包含原系中的一些子模,动动动动动动动动动动动动动动动动动动动动动动动动动动动动动那就会动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动迫我接口中的所有方法,并且要写一些方法。的接口被强
称胖接口或者叫被染的接口,使用的接口将会系引入一些不正确动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动
的行。动动
动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动接口隔离原表明客端不被迫一些他不会使用的接口,把胖接口中强
的方法分,然后用多个接口代替它,动动动动动动动动动动动动动 个接口服于一个子模。每
动 接口隔离原
动动动动动动动动动动动动动动动动动 不迫客端依于他不会使用的接口。强
动 例
动动动动动动动动动动动动动动动动动下面是一个反了接口隔离原的例子。我使用Manager动动动动动代表一个管理工人的管理者。有两型的工人:普通的和高效的,两工人都需要吃午。在来了一批机器人,它同动动动动动动动动动动动动动动动动动动动动动动动动动动动公司工作,但是他不需要吃午。一方面动动动动动动动动动动动Robot动动动需要IWoker动动动动动动动动动动接口,因他要工作,另一方面,它又不需要动动动动动动动IWorker动动动动动动动动动 接口,因它不需要吃。
动动动动动在情况下IWorker动动动动动动动动动动动动动 就被是一个被染了的接口。
动动动动动动动动动动动如果我保持在的,那Robot动动动将被迫eat()动动动动动动动动动动动动动动方法,我可以写一个它什也不做,比如它只用一秒的吃午,,但是会程序造成不可料的果,例动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动如管理者看到的表中示被走的午餐多于的人数,。动动动动动动动动动动动动动动动动动动动动
动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动根据接口隔离原,一个灵活的不包含被染的接口。于我的例子来,我把IWorker分离成2 个接口。
Java动 代
// interface segregation principle - bad example
interface IWorker {
public void work();
public void eat();
}
class Worker implements IWorker {
public void work() {
// ....working
}
public void eat() {
// ...... eating in launch break
}
}
class SuperWorker implements IWorker{
public void work() {
//.... working much more
}
public void eat() {
//.... eating in launch break
}
}
class Manager {
IWorker worker;
public void setWorker(IWorker w) {
worker=w;
}
public void manage() {
worker.work();
}
}
// interface segregation principle - bad example
interface IWorker {
public void work();
public void eat();
}
class Worker implements IWorker {
public void work() {
// ....working
}
public void eat() {
// ...... eating in launch break
}
}
class SuperWorker implements IWorker{
public void work() {
//.... working much more
}
public void eat() {
//.... eating in launch break
}
}
class Manager {
IWorker worker;
public void setWorker(IWorker w) {
worker=w;
}
public void manage() {
worker.work();
}
}
动动动动动动动动下面是遵循接口隔离原的代。通把IWorker分离成两个接口,Robot动动动不需要再被迫强eat()方法。
如果我需要动动动动Robot动动动动动动动动动动动动动添加其他的功能,例如重新充,我可以建一个新的IRechargeable接口,其
中包含一个重新充的方法动动动动recharge 。
Java动 代
//interface segregation principle - good example
interface IWorkable {
public void work();
}
interface IFeedable{
public void eat();
}
class Worker implements IWorkable, IFeedable {
public void work() {
// ....working
}
public void eat() {
//.... eating in launch break
}
}
class SuperWorker implements IWorkable, IFeedable{
public void work() {
//.... working much more
}
public void eat() {
//.... eating in launch break
}
}
class Robot implements IWorkable{
public void work() {
// ....working
}
}
class Manager {
IWorkable worker;
public void setWorker(IWorkable w) {
worker = w;
}
public void manage() {
worker.work();
}
}
//interface segregation principle - good exampleinterface IWorkable {
public void work();
}
interface IFeedable{
public void eat();
}
class Worker implements IWorkable, IFeedable {
public void work() {
// ....working
}
public void eat() {
//.... eating in launch break
}
}
class SuperWorker implements IWorkable, IFeedable{
public void work() {
//.... working much more
}
public void eat() {
//.... eating in launch break
}
}
class Robot implements IWorkable{
public void work() {
// ....working
}
}
class Manager {
IWorkable worker;
public void setWorker(IWorkable w) {
worker = w;
}
public void manage() {
worker.work();
}
}
动动
动动动动动动动动动动动动动动动动动动动动动动 如果已成了胖接口,可以使用适配器模式隔离它。
动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动像其他原一,接口隔离原需要外的和努力,并且会增加代的
性,但是可以生更灵活的。如果我度的使用它将会生大量的包含一动动动动动动动动动动动动动动动动动动动动动动动动动动动动动动方法的接口,所以需要根据并且出那些将来需要展的代来使用它。动动动动动动动动动动动动动动动动动动动动动动动
本文档为【面向对象的设计原则_ 接口隔离原则】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。