'C#' 태그의 글 목록 (12 Page)
본문 바로가기
728x90
반응형

C#50

2021.11.15_팩토리메소드패턴01.패턴소개 팩토리 메소드 패턴 해결하는 문제 어떤 객체 인스턴스를 생성하는 책임을 구체적인 클래스가 아니라 추상적인 인터페이스의 메소드로 감싸는것 이렇게 하는 이유는? 배를 만든다고 할때, 화이트 쉽만 만들면서 사업이 잘됬는데 추후에 블랙 쉽을 만들게 됬는데, 이전은 그냥 static일때 화이트 쉽 만드는 과정이 있었는데 색을 입힌다거나 로고, 글씨 등등 배송을 할꺼라는 처리가 일어났다. 블랙 쉽을 만들기 시작했는데 이전의 클래스에 다른 로고와 다른 색 등등 하면서 if else가 늘어나면서 복잡해짐 다른 배가아니 수륙양용을 만드는 경우에 모든 과정을 하나의 구체적인 클래스에 모두담기에는 로직 자체가 복잡해짐 그래서 추상화 되어 있는 팩토리가 필요하다. 우선 인터페이스를 만들고 추방 매소들 하위 클래스에서 만들게 .. 2021. 11. 15.
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.
2021.11.14_02.멀티쓰레드환경에서안전하게구현하는방법 싱글톤패턴 구현하는 방법 1 이전 방법은 멀티에 최적화 되지 않음 멀티의 환경에서 두개가 new를 실행하면 달라지니까 싱글톤이 아니게됨 동기화 시키기 public class Settings{ private static Settings instance; private Settings(){} public static synchronized Settings getInstance(){ if(instance == null){ instance = new Settings(); } return instance ; } } 동시에 못들어가게하니까 가능 하지만 동기화 처리 작업 때문에 성능에 불이득이 생기는 단점이 생김 락을 걸어서 하기 때문에 그 쓰레드만 들어가고 해제하고 다른 쓰레드 처리하니까 성능 부하 생김 안전하지만.. 2021. 11. 14.
21.11.07_1.2디자인패턴의세계에오신것을환영합니다 인터페이스는 어떨까요? 6개월 마다 제품을 갱신한다면? 매번 Duck의 서브클래스의 fly()와 quack() 메소드를 일일이 살펴봐야하고 상황에 따라 오버라이드 해야함 슈퍼 클래스에서 fly() 메소드가 들어있는 Flyable 인터페이스를 만듦 이 인터페이스를 구현해서 fly() 메소드를 집어넣을 수 있음 Quackable 이라는 인터페이스를 만들어도 됨 모든 서브 클래스에서 날거나, 꽥꽥 거리는 기능이 있어야하는 것은 아니므로 상속하는것이 올바른 해결책이 아니라는 것을 알 수 있음 서브클래스에서 Flyable, Quackable을 구현하도록 하면, 기능적인 문제는 해결 대신 코드 재사용은 전혀 기대 못함 코드 관리면에서도 별로임 관리 하는 면에서도 또다른 커다란 문제점이 생기게 됨 날 수 있는 오리 .. 2021. 11. 8.
728x90
반응형