Spring Boot3 & Spring Framework 6 강의 :: Section 2. 느슨한 결합과 강한 결합

suragryen·2024년 2월 6일
0

Udemy-Spring

목록 보기
1/25

결합🧑🏻‍🏫

:무언가를 변경하는데 얼마나 많은 작업이 관련되어 있는지에 대한 측정

🔎느슨한 결합의 필요성을 mario 게임과 supercontra 게임 예시를 통해 알아보자

mario.java

package com.in28minutes.learnspringframework.game;

public class MarioGame {

	public void up() {
		System.out.println("Jump");
		
	}
	
	
	public void down() {
		System.out.println("Go into a hole");
	}
	
	public void left() {
		System.out.println("Go back");
	}
	
	public void right() {
		System.out.println("Accelerate");
	}
	
}

supercontra.java

package com.in28minutes.learnspringframework.game;

public class SuperContraGame {
	
	public void up() {
		System.out.println("up");
		
	}
	
	
	public void down() {
		System.out.println("Sit down");
	}
	
	public void left() {
		System.out.println("Go back");
	}
	
	public void right() {
		System.out.println("Shoot a bullet");
	}

}

GameRunner.java

package com.in28minutes.learnspringframework.game;

public class GameRunner {
		//MarioGame game;
		SuperContraGame game;
		
		public GameRunner(SuperContraGame game
							//MarioGame game
							) {
			this.game = game;
		}

		public void run() {
			System.out.println("Running game: " + game);
			//System.out 보다 로깅 프레임워크를 사용하는것이 좋다  
			game.up();
			game.down();
			game.left();
			game.right();
			
		}
	
}

main

public class AppGamingBagic {

	public static void main(String[] args) {
		
		//var marioGame = new MarioGame();
		//var gameRunner = new GameRunner(marioGame);
		
		var superContraGame = new SuperContraGame(); 
		var gameRunner = new GameRunner(superContraGame);
			gameRunner.run();

	}

}

위의 두 게임은 동작방법이 비슷하지만 강한 결합으로 한가지 게임을 실행하면 나머지 게임을 주석 처리 해줘야하는 비효율적인 방식으로 동작 되고 있다( 느슨한 결합의 필요성)

How much work is involved in changing something?

🔎결합 : 무언가를 변경하는데 얼마나 많은 작업이 관련되어 있는지에 대한 측정

문제점 : GameRunner 클래스가 특정 게임과 강하게 결합되어 있다(마리오게임에서 수퍼콘트라 게임으로 바꾸는것이 쉽지 않음)

예시)

  • An engine is tightly coupled to a Car -> 자동차에서 엔진은 쉽게 바꿀 수 없는 (강한결합)
  • A wheel is loosely coupled to a Car -> 자동차에서 바퀴는 쉽게 바꿀 수 있음 (느슨한결합)

  • 결합은 소프트웨어를 구축할 때 중요한 부분
  • 비지니스, 프레임워크, 코드, 등 모든것들이 변화하기때문에 가능한 느슨한 결합으로 쉽게 변화를 줄 수 있어야 한다
  • 가능한 코드를 적게 변경하며 기능을 변경할 수 있어야 한다
profile
블로그 이사중 ☃︎

0개의 댓글

관련 채용 정보