인터페이스의 사용―초보자를 겨냥한 것(형상적이어서 볼 만하다)

오랫동안 블로그를 쓰지 않았는데 오늘 주말에 할 일이 없으니 허풍을 떨자.javaeye에서 글을 봤는데 인터페이스가 있는 사람이 이미 입문한 사람이 알아볼 수 있을 것 같아서 초보자는 아직 알아볼 수 없다. 마침 요 며칠 나도 다른 사람에게 인터페이스를 알려주고 있는 김에 올라왔다.이씨 대환의 원칙은 무엇입니까?듣기에는 매우 심오하지만, 우리도 무슨 학원파도 아니니, 큰 도리를 따지지 말고, 직접 예를 들어 말해 보자.우리는 사람과 프로그래머를 예로 들자.사람은 하나의 큰 부류이고, 프로그래머는 자신의 부류를 계승한다.이 말을 봐라. 사람은 밥을 먹어야 한다.이 말에 우리는'사람'을'프로그래머'로 바꿨다. 즉, 프로그래머는 밥을 먹어야 한다. 이렇게 바꾸면 아무런 문제가 없을 것이다.지금 우리는 반대로'프로그래머는 컴퓨터로 프로그램을 쓸 수 있다'는 안의 프로그래머를'사람'으로 바꾸었다. 바로 사람이 컴퓨터로 프로그램을 쓸 수 있다는 것이다.이렇게 하면 반드시 정확한 것은 아니다. 그렇지 않으면 문제가 커질 것이다. 우리 프로그래머들은 단지 밥을 먹지 못할까 봐 걱정할 뿐이다.이것이 바로 이씨대환의 원칙이다. 부류를 사용하는 곳은 틀림없이 그의 부류로 교체할 수 있지만, 부류를 사용할 때 부류로 교체하는 것은 반드시 정확하지 않다.자, 이제 프로그램 설계로 돌아갑시다.다음 절차를 보십시오. 한 학교에 두 종류의 사람이 있습니다. 학생, 선생님입니다.그들은 모두 밥을 먹고 잠을 자려고 한다.

  
  
  
  
  1. public interface  {  
  2. void  ();  
  3. void  ();  
  4. public class   implements  {  
  5. public void  (){  
  6. //  
  7. }  
  8. public void  (){  
  9. //  
  10. }  
  11. ...// , 、  
  12. public class   implements  {  
  13. public void  (){  
  14. //  
  15. }  
  16. public void  (){  
  17. //  
  18. }  
  19. ...// ,  
  20. public class  {  
  21. public void  (  ren){  
  22. ren. ();  
  23. public void  (  ren){  
  24. ren. ();  
  25. }  
  26. }  

여기에 리씨대환 원칙을 적용해'개식(開食)'과'방과(農農)'의 매개 변수가 모두 사람이라면 이곳이 학생과 선생님으로 바뀌어도 틀림없이 가능할 것이다.사람 a = new 학생();학교식사를 시작하다학교하교(a);이렇게 집행한 결과는 학생들이 침실로 돌아가 밥을 먹는 것이다.사람 b = new 선생님().학교식사를 시작하다(b).학교하교(b);이렇게 집행한 결과는 선생님이 집에 돌아가 밥을 먹는 것이다.왜 이렇게 써요?이렇게 쓰면 무슨 좋은 점이 있습니까?나는 식사를 시작할 때'학생. 식사(食);'를 직접 호출할 수 있다."선생님. 식사();"네?이어서 보다.어느 날, 학교에 세 번째 사람, 학부모가 왔어요.학부모는 침실에 가서 자거나 집에 가서 자는 것이 아니라 여관에서 잔다. 식당에 가서 밥을 먹거나 집에 가서 밥을 먹는 것이 아니라 외식하러 간다.이때 학교의 이 시스템은 어떻게 처리해야 합니까?만약 원래'사람'이라는 인터페이스가 정의되지 않았다면 번거로웠을 것이다. 모든 사람을 사용하는 곳의 코드를 바꾸어야 한다.지금은 달라졌다. 나는 바로 하나의 종류를 정의할 수 있다. 학부모, 이 종류는 사람을 실현하는 인터페이스면 된다.자, 코드를 보십시오.

  
  
  
  
  1. public class   implements  {  
  2. public void  (){  
  3. //  
  4. }  
  5. public void  (){  
  6. //  
  7. }  
  8. ...// 

다른 특유의 방법, 예를 들어 선생님을 만나고, 돈을 알고, 이익을 움직일 수 있는 등은 하나같이 충분하지 않다. 호출할 때 어떤 코드도 수정할 필요가 없고, 원래와 같다. 사람 c=new 학부모().학교식사를 시작하다(c).학교하교(c);가장의 숙식 문제를 가볍게 해결하자!이렇게 되면 학교에 아무리 많은 손님이 와도 상관없어요. 절대로 대처할 수 있어요. 이것이 바로 전설의 확장성입니다!초보자가 이곳을 보면 인터페이스의 작용을 이해할 수 있을지 모르겠다.만약 당신이 아직도 이해하지 못한다면 당신은 사람이라는 인터페이스를 없애고 자신이 학교에서 밥을 먹고 학교를 마치는 종류를 쓴 다음에 학부모라는 신인류를 추가해서 들어가세요. 당신의 코드가 어떤 모양인지 보세요. 인구가 이렇게 많은 중국에서 만약에 어느 날 당신의 학교에 수천 수만 명의 신인류가 오면 당신은 어떻게 해야 할지 생각해 보세요!됐어, 밥 먹으러 가야지!아!어디 가서 밥을 먹어야 합니까?이게 문제야!출처:http://blog.easyjf.com/html/blog/20070902/26025254-9977952.htm

좋은 웹페이지 즐겨찾기