🏭팩토리메서드🏭
정의
객체의 생성코드를 별도의 클래스로 분리하는 방식이다.
실질적인 구현은 하위클래스가 결정하도록 위임하는 디자인패턴
특징
개방/폐쇄 원칙.
⇒ 또 새로운 객체 뭐 중형차가 필요하다면 기존 클래스의 코드를 변경하지 않고 확장이 가능하다.
상위클래스 Factory는 MakeCar라는 추상메서드를 정의함.
이 메서드의 구체적인 구현은 하위클래스에서.
⇒ Factory 클래스의 MakeCar()로 모든차를만들수있다. ⇒ string으로 승용차, 버스, 스쿠터
⇒ Car 인터페이스의 추상메서드인 Drive()를 또 각 차종들이 구현하므로
차종에 맞게 메서드 오버라이딩 할 수 있다.
// 객체를 생성할 Factory 클래스
public class Factory {
// 객체를 생성할 팩토리 메서드
public Car MakeCar(String s) {
if (s == "승용차") {return new SmallCar();}
if (s == "버스") {return new Bus();}
if (s == "스쿠터") {return new Scooter();}
return null;
}
}
장점:
느슨한 결합
=> 클래스 생성과 사용의 처리를 분리. 시스템의 다른 부분에 영향X. ⇒ 유지보수하기 쉬워짐
단점 : 새로운 자식 클래스를 도입해야하므로 코드가 더 복잡해질수있다.
해결책? => 생성 클래스들의 기존 계층구조에 패턴을 도입하는것
⇒ 추상 팩토리 패턴을 도입하여 관련 객체군을 생성하는 공통 인터페이스.
팩토리 메서드 활용
DHCP: 인터넷에 접속하는 컴퓨터에 일정기간동안 여러정보를 할당하는 프로토콜
⇒ 여러 정보라 하면, 네임서버주소, IP주소, 게이트웨이주소를 할당.
장점
단점: DHCP 서버에 의존성이 높아 서버에 이슈생기면 ip할당에 문제 생긴다.
DHCP는 IP 주소를 할당하고 관리하는 역할,
공유기는 이러한 DHCP 서비스를 제공하고 네트워크 트래픽을 관리하는 중추적인 역할
DHCP vs NAT
DHCP는 할당의 개념 (동적으로 할당)
NAT은 매핑의 개념 (주소변환)
공유기
: 라우터의 많은 기능중 NAT 기능을 첨가한것이 공유기
많은 현대 공유기들은 내장된 DHCP 서버를 갖고 있습니다. 이는 공유기가 네트워크에 연결된 모든 장치에 자동으로 IP 주소를 할당할 수 있게 해줍니다.
공인 IP : 업체에서 사용자에게 할당하는 IP
⇒ 공유기가 인터넷과 통신하도록 하는 역할을 하는 외부 IP주소
사설 IP : 내부 IP주소