Skip to content

Instantly share code, notes, and snippets.

@therne
Last active August 29, 2015 14:21
Show Gist options
  • Save therne/384e9ca750482b389c83 to your computer and use it in GitHub Desktop.
Save therne/384e9ca750482b389c83 to your computer and use it in GitHub Desktop.
SOLID : Interface Segregation Principle Example
/**
* ClientDataReceiver
* 클라이언트로부터 데이터가 수신될 때 호출되는 리시버이다.
*/
interface ClientDataReceiver {
public void onLoginDataReceive(User user);
public void onGamePlayDataReceive(PlayData data);
}
/**
* LoginServer
* 로그인에 관한 내용을 처리하는 서버 클래스
*/
class LoginServer implements ClientDataReceiver {
@Override
public void onLoginDataReceive(User user) {
doSomethingNice();
doSomethingProcess();
doSomethingProcess();
doSomethingProcess();
doSomethingProcess();
// do something nice...
}
@Override
public void onGamePlayDataReceive(PlayData data) {
// unused!
}
}
/**
* GamePlayServer
* 게임 플레이에 관한 내용을 처리하는 서버
*/
class GamePlayServer implements ClientDataReceiver {
@Override
public void onLoginDataReceive(User user) {
// unused!
}
@Override
public void onGamePlayDataReceive(PlayData data) {
// bla bla.. do some logic
this.move(data);
}
}
interface LoginDataReceiver {
public void onLoginDataReceive(User user);
}
interface GameDataReceiver {
public void onGamePlayDataReceive(PlayData data);
}
/**
* LoginServer
* 로그인에 관한 내용을 처리하는 서버 클래스
*/
class LoginServer implements LoginDataReceiver {
@Override
public void onLoginDataReceive(User user) {
doSomethingNice();
doSomethingProcess();
doSomethingProcess();
doSomethingProcess();
doSomethingProcess();
// do something nice...
}
}
/**
* GamePlayServer
* 게임 플레이에 관한 내용을 처리하는 서버
*/
class GamePlayServer implements GameDataReceiver {
@Override
public void onGamePlayDataReceive(PlayData data) {
// bla bla.. do some logic
this.move(data);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment