JAVA16 탬플릿 메서드 패턴 & 팩토리 메서드패턴 탬플릿 메서드 패턴 상속을 통해 중복되는 코드는 상위클래스로, 달라지는 부분은 하위클래스로 놓는다. 상위클래스는 추상클래스이다. 탬플릿(공통순서)을 제공하는 메서드(final을 사용해 Override 막음) + 자식클래스가 꼭 구현해야하는 추상메서드 + 선택적 오버라이딩하는 훅 메서드 탬플릿 메서드 패턴이 필요한 경우 알고리즘의 일관성을 유지하면서 일부분 변경사항 있을 시 사용한다. 즉 여러 클래스가 비슷한 알고리즘 구조를 공유하고 일부만 서브클래스에서 변경한다. 사용예시 간단한 음료 제조 과정이다. 음료는 각각 다른 단계의 처리가 필요한데 모든 음료의 제조에는 물을 끓이는 단계, 재료를 추가하는 단계, 음료를 따르는 단계가 포함된다. 그러나 각 음료의 구체적인 단계는 다르다. 커피는 커피 원두를 넣는다.. 2024. 1. 24. 메서드 동적 바인딩 정적바인딩과 동적바인딩은 메서드 호출 위치의 결정 방식을 나타낸다. C는 정적바인딩 / Java는 동적바인딩에 해당한다. 정적바인딩 정적바인딩은 컴파일 시간에 메서드 호출 위치가 결정된다. 컴파일러는 변수의 타입을 기반으로 어떤 메서드를 호출할지 결정하고 이 정보는 컴파일 시간에 확정된다. 메서드 오버라이딩이 발생해도 객체의 실제 타입이 아니라 참조 변수의 선언 타입을 기준으로 호출한다. 정적바인딩은 메서드의 오버로딩에도 적용된다. class Animal { void makeSound() { System.out.println("Animal sound"); } } class Dog extends Animal { void makeSound() { System.out.println("Dog barking");.. 2024. 1. 19. 참조형식과 호출되는 메소드 관계 어떤 참조형식이 가능한가 Product와 SaleProduct는 IS A 상속관계로 Product는 부모클래스 / SaleProduct는 자식클래스이다. 둘 중 옳은 것은? Product product = new SaleProduct(); (O) SaleProduct product = new Product(); (X) SaleProduct객체 안에는 Product객체와 SaleProduct 객체가 있기때문이다. 따라서 참조형식이 2개이다. 적용 Product product = new SaleProduct(); 를 보고 호출되는 메서드관계를 알아보자 1. 참조형식이 뭐냐에 따라서 호출 할 수 있는 메서드의 범위가 정해진다. >> Product에 있는 메서드만 호출가능하다. 2. 그 다음 new 한 객체에 .. 2024. 1. 18. IS A 상속 IS A 상속이란? 요약하자면 일반 클래스를 구체화 하는 상황에서 상속을 사용한다. 자식클래스는 부모클래스의 모든 멤버(메서드, 필드)를 상속받는다. 따라서 자식클래스는 부모클래스의 모든 기능을 사용할 수 있다. 상속을 사용하면 클래스간 결합도가 높아져 상위 클래스를 수정해야 할 때 하위 클래스에 미치는 영향이 매우 크다. 상위클래스 = 부모클래스 = 기반클래스 하위클래스 = 자식클래스 = 파생클래스 장단점 장점 생산성이 좋아 빠르게 필요한 로직을 더해 구현 가능하다. 중복코드가 줄어든다. 다형성이 가능하다. 단점 부모클래스가 모든 자식클래스에 영향을 미쳐 수정 시 까다로워질 가능성이 있다. 테스트를 많이 거쳐야 한다. 캡슐화를 깨지 않으려면 상위클래스에 대해 전부 살펴 봐야 상속 받을 시 제대로 구현할.. 2024. 1. 16. 이전 1 2 3 4 다음