一、不遵循改规则
- 一个类对另外一个类的依赖,应该建立在最小接口的原则上;
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7e3a685ec76716f2c69f27c105546d58.jpeg)
package com.day.dreamer.seven.segregation;
public class TraditionalActor {
public static void main(String[] args) {
SingerStarManger singerStarManger = new SingerStarManger();
singerStarManger.work(new SingerStar());
SportStarManger sportStarManger = new SportStarManger();
sportStarManger.work(new SportStar());
}
}
interface Star{
void eat();
void sleep();
void sing();
void dance();
void playBasketBall();
}
class SingerStarManger{
public void work(Star star){
System.out.println("歌手导师入场");
star.eat();
star.sleep();
star.sing();
star.dance();
}
}
class SportStarManger{
public void work(Star star){
System.out.println("运动教练入场");
star.eat();
star.sleep();
star.playBasketBall();
}
}
class SportStar implements Star{
@Override
public void eat() {
System.out.println("运动员吃饭");
}
@Override
public void sleep() {
System.out.println("运动员睡觉");
}
@Override
public void sing() {
System.out.println("");
}
@Override
public void dance() {
System.out.println("");
}
@Override
public void playBasketBall() {
System.out.println("运动员打篮球");
}
}
class SingerStar implements Star{
@Override
public void eat() {
System.out.println("歌手吃饭");
}
@Override
public void sleep() {
System.out.println("歌手睡觉");
}
@Override
public void sing() {
System.out.println("歌手唱歌");
}
@Override
public void dance() {
System.out.println("歌手跳舞");
}
@Override
public void playBasketBall() {
System.out.println("");
}
}
二、遵循接口隔离
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f133ef49143cc16fabd319c2fbf804cf.jpeg)
package com.day.dreamer.seven.segregation;
public class SegregationMan {
public static void main(String[] args) {
SingerManManager singerManManager = new SingerManManager();
singerManManager.operationFirst(new LDHMan());
singerManManager.operationSecond(new LDHMan());
SportManManager sportManManager = new SportManManager();
sportManManager.operationFirst(new SYMan());
sportManManager.operationSecond(new SYMan());
}
}
interface SingerMan{
void sing();
void dance();
}
interface SportMan{
void playBasketBall();
}
interface CommonMan{
void eat();
void sleep();
}
class LDHMan implements CommonMan,SingerMan{
@Override
public void sing() {
System.out.println("歌星唱歌");
}
@Override
public void dance() {
System.out.println("歌星跳舞");
}
@Override
public void eat() {
System.out.println("歌星吃饭");
}
@Override
public void sleep() {
System.out.println("歌星睡觉");
}
}
class SYMan implements CommonMan,SportMan{
@Override
public void playBasketBall() {
System.out.println("运动员打球");
}
@Override
public void eat() {
System.out.println("运动员吃饭");
}
@Override
public void sleep() {
System.out.println("运动员睡觉");
}
}
class SingerManManager{
public void operationFirst(CommonMan commonMan){
commonMan.eat();
commonMan.sleep();
}
public void operationSecond(SingerMan singerMan){
singerMan.dance();
singerMan.sing();
}
}
class SportManManager{
public void operationFirst(CommonMan commonMan){
commonMan.sleep();
commonMan.eat();
}
public void operationSecond(SportMan sportMan){
sportMan.playBasketBall();
}
}