티스토리 뷰

팩토리 패턴 
1. 이해하기가 가장 쉬운 패턴
 - 디자인 패턴에 대한 개념을 잡기에 가장 쉽고 직관적인 패턴이다. 

2. 연관관계가 강하다. 
패턴에 있어서는 class와 class사이에서는 연관관계가 약한 것이 좋다.
연관관계가 강한경우 상위 클래스의 변경 시 하위 클래스의 변경도 불가피하다 

패턴에서 해결방안. 
Factory 클래스를 둬서 중간에 객체 생성만을 담당하는 클래스를 만들고 객체 생성을 위임해서  상위 클래스 와의 연관관계를 약화시킨다. 

 Product클래스 변경시 Factory클래스만 변경 유저 클래스는 거기에서 생성된 인스턴스만 가지고 와서 사용할 수 있다. 

언제 하는 것이 좋은가? 
 Product클래스에 달려있다. 
 만들어야될 객체가 사용자가 임의로 접근해서 만들어서 사용해도 되는 것인가? 시스템 Low레벨에 관련된 직접적으로 접근해서 생성하도록 하지 않고 Factory클래스에서 Get함수로 인스턴스를 생성한 내용을 가지고 와서 사용하도록 하는 것이 좋다.

 

객체 지향

 

 1 상속성 
 Extends vs implement
 is a relationship
 최상위 클래스는 Object 클래스 
 2 은닉성
  - 외부에서 직접적으로 접근하는 방법을 막는 것 
  - 공개된 메소드만을 이용해서 접근 가능
  - 왜 써야 하는가? 변경해서는 안되는 정보를 의도하지 않은 누군가 의도하지 않은 값으로 변경시킬 수 있다. 정보 변경 시 제약조건을 걸 수 있다. 
 3 다형성 
   - 패턴의 가장큰요소
   * 메소드 오버 로딩(중복 정의)
   * 매소드 오버라이딩(재정의)
    -부모메소드와 차일드의 클래스 정의를 다르게 정의하겠다. 
   * 이기종집합
    - 같은 부모로 상속받은 자식 클래스는 부모 클래스의 배열로 만들 수 있다.    
   * 다형적 변수 
    - 추상메소드 내용이 없는 정의만 있는 함수 선언 시 abstract 사용 클래스도 abstract로 정의 
      추상메소드가 포함된 클래스를  extends로  상속 시 해당 클래스도 abstract로 정의해주어야 한다. abstract도 상속으로 전달됨 부모 클래스의 abstract함수를 모두 재정의 시 abstract를 뺄 수 있고
      해당클래스는 new로 객체를 만들 수 있게 된다. 
      같은 부모타입에서 정의된 추상 함수는 부모 메서드의 정의로 전달이 가능하다.  선언 시 객체 명도 부모 타입으로 정의 가능하다.  
      factory 패턴에서 객체만들어서 전달 시 해당 객체를 해당 객체의 타입만이 아니라  부모 타입으로도 받을 수 있다. 

'프로그래밍 > 디자인패턴' 카테고리의 다른 글

C++ 웹페이지 인쇄설정 여백 주기, 배경색 적용되게 하기  (0) 2019.09.19
싱글톤패턴  (0) 2019.09.19
RMI  (0) 2019.09.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
글 보관함