ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [이펙티브 자바] 2장 객체 생성과 파괴
    Books/이펙티브 자바 2018. 11. 22. 03:43
    반응형

    Chapter 2. 객체의 생성과 파괴

    객체의 생성

    Item 1. Constructor 대신 Static Factory Method를 고려하라.

    • Laptop Class
    public class Laptop {
        private String model;
        private String company;
    }
    • Constructor
    public Laptop(String modelName, String company) {
        this.modelName = modelName;
        this.company = company;
    }
    • 이름을 가진 Static Factory Method
    public static Laptop ofModelNameAndCompany(String modelName, String company) {
        Laptop laptop = new Laptop();
        laptop.company = company;
        laptop.modelName = modelName;
        return laptop;
    }

    From to Entity Class (API request Parameter)

    • Api request with LaptopForm
    public class LaptopForm {
        private String name;
        private String corp;
    }
    @PostMapping(value = "/add")
    public LaptopDto addLapTop(@RequestBody LaptopForm laptopForm) {
        // 생략
    }
    • Laptop으로 convert!
    public class Laptop {
        private Long id;
        private String modelName;
        private String company;
    
        public static Laptop from(LaptopForm laptopForm) {
            Laptop laptop = new Laptop():
            laptop.modelName = laptopForm.getModelName();
            laptop.company = laptopForm.getCompany();
            return laptop;
        }
    }

    Entity to Dto class (API response parameter)

    public class LaptopDto {
        private String modelName;
        private String companyName;
    
        public static LaptopDto from(Laptop laptop) {
            LaptopDto laptopDto = new LaptopDto();
            laptopDto.company = laptop.getCompany();
            laptopDto.modelName = laptop.getModelName();
            return laptopDto;
        }
    }

    정리하자면 Constructor 대신 Static Factory Method를 고려하라

    • 장점
      • 이름을 가질 수 있다.
      • Simple하고 명확하게 사용할 수 있다.
      • 인스턴스를 매번 생성할 필요는 없다.
      • Flyweight pattern - Collection Object
      • Singleton pattern - Single Object (Singleton의 경우 한 객체, Flyweight의 경우 multiple한 객체를 다룬다)
    • 단점
      • Static Factory method만 제공하면 Constructor가 없을 수 있어 상속받은 Class를 만들 수 없다.
      • 프로그래머에게 인지가 잘 되지 않을 수 있다.
    반응형
Designed by Tistory.