[{"data":1,"prerenderedAt":264},["ShallowReactive",2],{"term-i\u002Finterface-segregation":3,"related-i\u002Finterface-segregation":250},{"id":4,"title":5,"acronym":6,"body":7,"category":232,"description":233,"difficulty":234,"extension":235,"letter":236,"meta":237,"navigation":115,"path":238,"related":239,"seo":244,"sitemap":245,"stem":248,"subcategory":6,"__hash__":249},"terms\u002Fterms\u002Fi\u002Finterface-segregation.md","Interface Segregation",null,{"type":8,"value":9,"toc":226},"minimark",[10,15,19,23,26,30,215,219,222],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"Interface Segregation means don't force classes to implement methods they don't need. A Printer shouldn't have to implement a 'fax()' method just because some all-in-one machine does. Keep interfaces small and focused so nobody gets stuck implementing useless stuff.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"The Interface Segregation Principle states that clients should not be forced to depend on interfaces they do not use. Large 'fat' interfaces should be split into smaller, more specific ones. Classes then implement only the interfaces relevant to their behavior.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Bad: fat interface\ninterface Machine {\n  print(): void;\n  scan(): void;\n  fax(): void;\n}\n\n\u002F\u002F Good: segregated interfaces\ninterface Printer { print(): void; }\ninterface Scanner { scan(): void; }\ninterface FaxMachine { fax(): void; }\nclass SimplePrinter implements Printer { print() {} }\n","typescript","",[38,39,40,49,64,80,92,104,110,117,123,147,168,189],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"sHwdD","\u002F\u002F Bad: fat interface\n",[41,50,52,56,60],{"class":43,"line":51},2,[41,53,55],{"class":54},"spNyl","interface",[41,57,59],{"class":58},"sBMFI"," Machine",[41,61,63],{"class":62},"sMK4o"," {\n",[41,65,67,71,74,77],{"class":43,"line":66},3,[41,68,70],{"class":69},"swJcz","  print",[41,72,73],{"class":62},"():",[41,75,76],{"class":58}," void",[41,78,79],{"class":62},";\n",[41,81,83,86,88,90],{"class":43,"line":82},4,[41,84,85],{"class":69},"  scan",[41,87,73],{"class":62},[41,89,76],{"class":58},[41,91,79],{"class":62},[41,93,95,98,100,102],{"class":43,"line":94},5,[41,96,97],{"class":69},"  fax",[41,99,73],{"class":62},[41,101,76],{"class":58},[41,103,79],{"class":62},[41,105,107],{"class":43,"line":106},6,[41,108,109],{"class":62},"}\n",[41,111,113],{"class":43,"line":112},7,[41,114,116],{"emptyLinePlaceholder":115},true,"\n",[41,118,120],{"class":43,"line":119},8,[41,121,122],{"class":47},"\u002F\u002F Good: segregated interfaces\n",[41,124,126,128,131,134,137,139,141,144],{"class":43,"line":125},9,[41,127,55],{"class":54},[41,129,130],{"class":58}," Printer",[41,132,133],{"class":62}," {",[41,135,136],{"class":69}," print",[41,138,73],{"class":62},[41,140,76],{"class":58},[41,142,143],{"class":62},";",[41,145,146],{"class":62}," }\n",[41,148,150,152,155,157,160,162,164,166],{"class":43,"line":149},10,[41,151,55],{"class":54},[41,153,154],{"class":58}," Scanner",[41,156,133],{"class":62},[41,158,159],{"class":69}," scan",[41,161,73],{"class":62},[41,163,76],{"class":58},[41,165,143],{"class":62},[41,167,146],{"class":62},[41,169,171,173,176,178,181,183,185,187],{"class":43,"line":170},11,[41,172,55],{"class":54},[41,174,175],{"class":58}," FaxMachine",[41,177,133],{"class":62},[41,179,180],{"class":69}," fax",[41,182,73],{"class":62},[41,184,76],{"class":58},[41,186,143],{"class":62},[41,188,146],{"class":62},[41,190,192,195,198,201,203,205,207,210,213],{"class":43,"line":191},12,[41,193,194],{"class":54},"class",[41,196,197],{"class":58}," SimplePrinter",[41,199,200],{"class":54}," implements",[41,202,130],{"class":58},[41,204,133],{"class":62},[41,206,136],{"class":69},[41,208,209],{"class":62},"()",[41,211,212],{"class":62}," {}",[41,214,146],{"class":62},[11,216,218],{"id":217},"when-youll-hear-this","When You'll Hear This",[16,220,221],{},"\"That interface is too fat — split it per Interface Segregation.\" \u002F \"ISP keeps your implementations clean and focused.\"",[223,224,225],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":51,"depth":51,"links":227},[228,229,230,231],{"id":13,"depth":51,"text":14},{"id":21,"depth":51,"text":22},{"id":28,"depth":51,"text":29},{"id":217,"depth":51,"text":218},"architecture","Interface Segregation means don't force classes to implement methods they don't need.","intermediate","md","i",{},"\u002Fterms\u002Fi\u002Finterface-segregation",[240,241,242,243],"SOLID","Dependency Inversion","Abstraction","Cohesion",{"title":5,"description":233},{"changefreq":246,"priority":247},"weekly",0.7,"terms\u002Fi\u002Finterface-segregation","Os8lVEwZp3laS87adYBzQBd-SfLN9iBlcBJ_SOj9rGk",[251,255,258,261],{"title":242,"path":252,"acronym":6,"category":232,"difficulty":253,"description":254},"\u002Fterms\u002Fa\u002Fabstraction","beginner","Abstraction is hiding the messy details and showing only what matters.",{"title":243,"path":256,"acronym":6,"category":232,"difficulty":234,"description":257},"\u002Fterms\u002Fc\u002Fcohesion","Cohesion is how well the things inside a module belong together. High cohesion means all the stuff in a class is related — like a toolbox full of tools.",{"title":241,"path":259,"acronym":6,"category":232,"difficulty":234,"description":260},"\u002Fterms\u002Fd\u002Fdependency-inversion","Dependency Inversion says high-level code shouldn't depend on low-level code — both should depend on abstractions.",{"title":240,"path":262,"acronym":240,"category":232,"difficulty":234,"description":263},"\u002Fterms\u002Fs\u002Fsolid","SOLID is five rules for writing code that doesn't turn into a nightmare over time. Each letter stands for a different rule.",1776518289200]