팩토리 메트로드를 터치해보도록 하겠습니다.

12101 단어 Java

오늘의 목표


Java의 Factory Method를 터치해보도록 하겠습니다.

쓸것

  • Java 언어로 학습한 디자인 모드로 시작하기
  • 그러면 시작.


    개시하다


    먼저 익숙한 위키백과로 팩토리 메트로드를 조사해보자.
    Factory Method 모드는 GoF(Gang of Four;4인조)가 정의한 디자인 모드 중 하나다.Factory Method 모드는 다른 클래스의 구조기를 자신의 방법으로 대체함으로써 애플리케이션에 전용하는 대상의 생성을 하위 클래스에서 쫓아내 클래스의 재활용성을 높이는 것이 목적이다.
    영감이 없어요.
    참고서에 의거하다
    인스턴스를 생성하는 플랜트는 Factory Method 모드인 Templete Method 모드로 구성됩니다.
    Templete Method+ 대량 생산인가요?
    읽다보면 Templete Method로 팩토리반을 만들고 그 팩토리반에서 대량으로 생산하는 반을 새롭게 구상하는 절차인 것 같다.

    참고서의 견본


    공장 수준의 Templete
    Factory.java
    package framework;
    
    public abstract class Factory  {
        public final Building create(String material, String address) {
            Building b = createBuilding(material, address);
            registerBuilding(b);
            return b;
        }
    
        protected abstract Building createBuilding(String material, String address);
        protected abstract void registerBuilding(Building building);
    }
    
    공장 설치는 아래의 HouseFactory입니다.
    HouseFactory.java
    package building;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import framework.Building;
    import framework.Factory;
    
    public class HouseFactory extends Factory {
    
        private static HouseFactory factory = new HouseFactory();
    
        private HouseFactory() {
            // privateコンストラクタ
        }
        public static HouseFactory getInstance() {
            return factory;
        }
    
        // 建物を建てた住所を登録する変数
        private List<String> addresses = new ArrayList<>();
    
        @Override
        protected Building createBuilding(String material, String address) {
            return new House(material, address);
        }
    
        @Override
        protected void registerBuilding(Building building) {
            addresses.add(((House)building).getAddress());
        }
    
        public List<String> getAddresses() {
            return addresses;
        }
    
    }
    
    피제작자의 추상적인 방법.
    Building.java
    package framework;
    
    public abstract class Building  {
        public abstract void live(String person);
    }
    
    제작자의 설치 방법.
    House.java
    package building;
    
    import framework.Building;
    
    public class House extends Building {
    
        private String material;
        private String address;
    
        House(String material, String address) {
            System.out.println(material + "で" + address + "に作ります。");
            this.material = material;
            this.address = address;
        }
    
        @Override
        public void live(String person) {
            System.out.println(person + "が住みました。");
        }
    
        public String getAddress() {
            return address;
        }
    
    }
    
    Main.java
    import building.HouseFactory;
    import framework.Building;
    import framework.Factory;
    
    public class Main {
    
        public static void main(String[] args) {
            Factory factory1 = HouseFactory.getInstance();
            Building house1 = factory1.create("木材", "東京都港区XXXXX");
            Building house2 = factory1.create("コンクリート", "東京都荒川区XXXXX");
    
            house1.live("斎藤さん");
            house2.live("佐藤さん");
        }
    
    }
    
    실행 결과는 다음과 같습니다.
    木材で東京都港区XXXXXに作ります。
    コンクリートで東京都荒川区XXXXXに作ります。
    斎藤さんが住みました。
    佐藤さんが住みました。
    
    그렇습니까?


    어쨌든 사용하고 싶은 쪽(하우스 실례를 원하는 쪽)은 팩토리를 보면 돼!그러니까참고로 팩토리 설치 클래스는 실례가 몇 개 없어도 되기 때문에 팩토리 설치 클래스는 싱레톤 모드를 혼합해 보았다.
    그래서 이번에는 팩토리 메트로드의 모드를 접해 봤다.

    좋은 웹페이지 즐겨찾기