. 구조(Structure)
구조는 "무엇으로 이루어져 있는가"에 대한 것입니다.
예시: 건물의 구조
- 기둥
- 벽
- 천장
- 계단
- 엘리베이터
소프트웨어 구조의 예
# 게임 시스템의 구조 예시
class GameSystem:
def __init__(self):
self.player = Player() # 플레이어 구성요소
self.enemies = EnemyManager() # 적 관리 구성요소
self.score = ScoreSystem() # 점수 구성요소
self.sound = SoundManager() # 사운드 구성요소
# 각 구성요소들은 독립적인 구조를 가짐
class Player:
def __init__(self):
self.health = 100
self.position = Position()
self.inventory = Inventory()
구조의 특징:
- 실체적 구성요소들의 집합
- 각 부분의 역할과 책임
- 구성요소 간의 관계
- 시스템의 뼈대
설계(Design)
설계는 "어떻게 작동하게 할 것인가"에 대한 것입니다.
# 게임 시스템의 설계 예시
class GameSystem:
def __init__(self):
# 설계 원칙: 의존성 주입을 통한 유연한 구조
self.event_manager = EventManager()
self.config_manager = ConfigManager()
def initialize_components(self):
# 설계 패턴: 팩토리 메서드 패턴 사용
self.player = PlayerFactory.create_player(self.config_manager.get_player_config())
self.enemies = EnemyFactory.create_enemies(self.config_manager.get_enemy_config())
def update(self):
# 설계 원칙: 관심사의 분리
self.handle_input()
self.update_game_state()
self.render()
def handle_input(self):
# 설계 패턴: 옵저버 패턴 사용
inputs = self.input_manager.get_inputs()
self.event_manager.dispatch_events(inputs)
설계의 특징:
- 문제 해결 방법
- 동작 방식
- 상호작용 방법
- 확장성과 유지보수성
요리를 비유로 좀더 쉽게 설명 보러가기 =>클릭하세요
주요 차이점 정리:
- 구조(Structure)
- "무엇"에 중점
- 시스템의 구성요소 정의
- 정적인 측면
- 전체적인 형태와 구성
- 설계(Design)
- "어떻게"에 중점
- 동작 방식과 흐름 정의
- 동적인 측면
- 문제 해결 방법론
'개발하기' 카테고리의 다른 글
001 워드프레스 기본 메뉴 설명합니다. (1) | 2024.11.22 |
---|---|
요리를 예시로 쉽게 설명하는 구조와 설계 (2) | 2024.11.15 |
닌텐도 스위치 개발키트 구매 가이드 (0) | 2024.11.15 |
config.php와 index.php의 업데이트가 필요한 경우 (0) | 2024.11.07 |
서버의 종류와 의미(기초 개념) 설명합니다 (2) | 2024.11.07 |