[3점] 프리우스와 아크아에서 배운 플utter 단식

13562 단어 Fluttersingletontech

개시하다


지금까지 단식을 사용해 본 적이 없기 때문에 자세히 요약하고 싶습니다.
단식의 사용법을 대충 이해하고자 하는 사람은 프리우스 및 AQUA 체감 단식 사용부터 읽는 것이 좋다.

싱글톤

  • 실행 시 단식 모드로 이루어진 클래스 실례만 생성
    이것만으로는 이해하기 어려우니 다음에 구체적으로 예를 들어 설명하겠습니다.
  • 용례

  • 글로벌 상태를 관리할 때 => 클래스 간 공통 접근 방법, 값
  • 상태(상태)의 명확한 생성 필요 없음 = > 여러 인스턴스
  • 스토리지 사용을 줄이려면(새로운 사례에 대해서는 매번 스토리지를 확보할 필요가 없음)
  • 다음은 용례의 첫 번째クラス間で共通のメソッド、値にアクセスできる의 성질을 예로 들어 설명한다.

    일반반


    class MyClass{
        //...中身
    }
    
    final instance1 = MyClass();
    final instance2 = MyClass();
    
    instance1instance2는 같은 종류MyClass에서 생성된 것이다.
    여러 개의 실례가 있기 때문에 모양은 같지만 내부 상태(state)는 다른 대상으로 간주된다.

    단식류


    class Singleton{
        //...中身
    }
    
    final instance1 = Singleton();
    final instance2 = Singleton();
    
    instance1instance2는 같은 종류Singleton에서 같은 실례를 참조한다.
    같은 실례를 참조하기 때문에 내부 상태(state)는 공통Singleton 대상이다.
    처음 프로그래밍을 시작하면...
    "우리가 같은 반이라고 불렀기 때문에 내부의 state도 마찬가지입니다."
    이런 생각도 있지만 보통은 다르다.
    모든 실례는 하나의 상태를 가지고 있다.
    단식으로 등급을 이룬다면 어디서나 호칭Singleton()이 같은 내부 상태(상태)다.

    단식의 제작 방법


    다음은 플루터(Dart)에서 단타로 만드는 방법에 대해 설명한다.
  • 구조기Singleton._internal()를 개인(밑줄 친 상태)으로 설정하여 외부 호출 방지
  • 클래스 변수에 실례 저장Singleton._internal()
  • 외부 호출 시 클래스 변수로 되돌아오기
  • class Singleton{
      static final Singleton _instance = Singleton._internal();
    
      factory Singleton(){
        return _instance;
      }
    
      Singleton._internal();
    }
    

    프리우스 및 AQUA 체감 단식 사용


    구체적인 예로 프리우스군과 아쿠아군을 등장시키자.
    일반 학급Prius과 단식류Aqua에 각각 옵션을 설정합니다.

    일반학급Prius


    다음은 퓨즈 군.
    class Prius {
      Prius();
    
      List<String> options = [];
    
      List<String> addOption(String option) {
        return options..add(option);
      }
    }
    
    이 퓨즈 군에게 옵션을 추가하세요.
    void main() {
      final prius1 = Prius();
      print(prius1.addOption('カーナビ')); //[カーナビ]
      print(prius1.addOption('ドラレコ')); //[カーナビ, ドラレコ]
      final prius2 = Prius();
      print(prius2.addOption('ヒーター')); //[ヒーター]
    }
    
    이 예에서 마찬가지로 퓨즈prius1prius2는 다른 차다.カーナビドラレコ를 선택한 뒤 ヒーター를 추가했지만 각각 다른 차에 설치됐다.
    여기서 단식으로 제작된 아크아군에게 옵션을 추가해 주세요.

    싱글 아쿠아


    다음은 아쿠아 군.
    class Aqua {
      static final Aqua _instance = Aqua._internal();
      List<String> options = [];
    
      factory Aqua() {
        return _instance;
      }
    
      Aqua._internal();
    
      List<String> addOption(String option) {
        return options..add(option);
      }
    }
    
    이 AQUA 군에게 옵션을 추가하세요.
    void main() {
      final aqua1 = Aqua();
      print(aqua1.addOption('カーナビ')); //[カーナビ]
      print(aqua1.addOption('ドラレコ')); //[カーナビ, ドラレコ]
      final aqua2 = Aqua();
      print(aqua2.addOption('ヒーター')); //[カーナビ, ドラレコ, ヒーター]
    }
    
    Aqua는 단식 레벨이고, aqua1aqua2는 같은 차다.
    이에 따라 각각 aqua1aqua2에 설치된 옵션이 모두 반영됐다.

    최후


    이번 보도를 통해 플루터 중단식 제작 방법과 사용법을 이해하셨나요?
    단식을 사용하지 않은 사람들의 참고가 되었으면 좋겠습니다.
    트위터에 Flutter의 기술 관련 정보가 전송되고 있습니다!

    좋은 웹페이지 즐겨찾기