'CS Study/디자인패턴' 카테고리의 글 목록 (20 Page)
본문 바로가기
728x90
반응형

CS Study/디자인패턴84

2021.11.15_팩토리메소드패턴01.패턴소개 팩토리 메소드 패턴 해결하는 문제 어떤 객체 인스턴스를 생성하는 책임을 구체적인 클래스가 아니라 추상적인 인터페이스의 메소드로 감싸는것 이렇게 하는 이유는? 배를 만든다고 할때, 화이트 쉽만 만들면서 사업이 잘됬는데 추후에 블랙 쉽을 만들게 됬는데, 이전은 그냥 static일때 화이트 쉽 만드는 과정이 있었는데 색을 입힌다거나 로고, 글씨 등등 배송을 할꺼라는 처리가 일어났다. 블랙 쉽을 만들기 시작했는데 이전의 클래스에 다른 로고와 다른 색 등등 하면서 if else가 늘어나면서 복잡해짐 다른 배가아니 수륙양용을 만드는 경우에 모든 과정을 하나의 구체적인 클래스에 모두담기에는 로직 자체가 복잡해짐 그래서 추상화 되어 있는 팩토리가 필요하다. 우선 인터페이스를 만들고 추방 매소들 하위 클래스에서 만들게 .. 2021. 11. 15.
2021.11.14_05.자바와스프링에서찾아보는패턴 싱글톤 패턴 실무에서 어떻게 쓰이나? 스프링에서 빈의 스코프 중에 하나로 싱클톤 스코프 자바 java.lang.Runtime 다른 디자인 패턴(빌더, 퍼사드, 추상 팩토리 등) 구현체의 일부로 쓰이기도 함 Runtime public class RuntimeExample{ public static void main(String[] args){ Runtime runtime = Runtime.getRuntime(); System.out.println(runtime.maxMemory()); System.out.println(runtime.freeMemory()); } } 이 경우 new로 선언이 안됨 이 런타임은 자바 어플리케이션 실행하는 환경에 대한것 실행환경의 메모리 정보등 출력 가능 스프링의 경우 publ.. 2021. 11. 14.
2021.11.14_04.안전하고단순하게구현하는방법 public enum Settings{ INSTANCE; Settings(){ } private Integer number; public Integer getNumber(){ return number; } public void setNumber(Integer number){ this.number = number; } } // 줄인것 // 리플랙션에 안전한 코드 public enum Settings{ INSTANCE; } public class App{ public static void main(String[] args) throws NoSuchMethodException{ Settings settings = Settings.INSTANCE; Constructor constructor = Settings... 2021. 11. 14.
2021.11.14_03.싱글톤패턴구현방법을깨트리는방법 우리가 제대로 만들었지만 사용자가 이상하게 사용하면 깨질 수 있음 public class App{ public static void main(String[] args){ Settings settings = Settings.getInstance(); Settings settings1 = Settings.getInstance(); System.out.println(settings == settings1); } } 지금은 true인데 이것을 false로 나오는것은 어떻게 선언하냐면 리플렉션을 사용 리플렉션 사용하기 public class App{ public static void main(String[] args) throws NoSuchMethodException{ Settings settings = Set.. 2021. 11. 14.
728x90
반응형