(+) Application Layer - environment

Environment ์˜ ํ•„์š”์„ฑ

๊ฐ™์€ ์ข…๋ฅ˜์ด์ง€๋งŒ ๋นŒ๋“œ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ์„œ ๊ฐ’์ด ๋‹ฌ๋ผ์ ธ์•ผํ•˜๋Š” ๊ฒƒ๋“ค์ด ์žˆ๋‹ค. ๊ฐ€์žฅ ํฐ ์˜ˆ๋กœ ๊ฐœ๋ฐœ ์„œ๋ฒ„, ์šด์˜ ์„œ๋ฒ„์˜ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฅผ ์œ„ํ•ด์„œ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ์™€ ๊ฐœ๋ฐœ ์ฝ”๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฐœ๋ฐœ์ด๋‹ค. ๋ชจ๋“  ํ…Œ์ŠคํŠธ์™€ ๊ฐœ๋ฐœ์€ ํ”„๋กœ๋•์…˜์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘๋™ํ•˜๊ณ  ๊ตฌํ˜„๋˜์–ด์•ผํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ฝ”๋“œ ๋‚ด์—์„œ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ์™€ ๊ฐœ๋ฐœ ์ฝ”๋“œ๊ฐ€ ๊ตฌ๋ถ„๋˜์ง€ ์•Š๊ณ  ์ผ๊ด€๋˜๊ฒŒ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„๋˜๋„๋ก ํ•˜๋˜ ๋นŒ๋“œ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ ธ์•ผํ•  ๊ฐ’๋“ค์€ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉ ๋˜๋„๋ก ํ•ด์•ผํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ๊ทธ ์™ธ์—๋Š” ๋ชจ๋‘ ๋™์ผํ•œ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ์—์„œ ํ™˜๊ฒฝ ๋ณ„๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ–๊ณ  ๋™์ž‘ํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š”๋ฐ ์ด๋ฅผ Environment ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ–ˆ๋‹ค.

VM ์˜ต์…˜์„ ํ™œ์šฉํ•ด๋„ ๋  ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ ์ผ๋‹จ ์•ฑ ๊ธฐ๋™์‹œ ์ง„์ž… ์ง€์ ์„ ์•„์˜ˆ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜์—ฌ ์ฝ”๋“œ ๋‚ด์— enum ์œผ๋กœ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด๋‘๋Š” ๋ฐฉ์‹์„ ์ทจํ–ˆ๋‹ค.

ํŒจํ‚ค์ง€ ๊ตฌ์„ฑ ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณธ Environment

Environment ๊ตฌํ˜„

development.dart(production.dart ๋„ ๋™์ผํ•œ ๋ฐฉ์‹)

void main() {
  final Environment environment =
      Environment.newInstance(EnvironmentType.development);
  environment.run();
}

environment.dart

import 'package:app_frame_sample/app.dart';
import 'package:flutter/cupertino.dart';

import '../application.dart';

class Environment {
  static Environment? _instance;
  final EnvironmentType environmentType;

  const Environment._internal(this.environmentType);

  static bool get _isDevelopment {
    return _instance!.environmentType == EnvironmentType.development;
  }

  static bool get _isProduction {
    return _instance!.environmentType == EnvironmentType.production;
  }

  static String get baseUrl {
    if (_isDevelopment) {
      return 'http://localhost:8080';
    }

    if (_isProduction) {
      return 'http://localhost:8090';
    }

    throw UnsupportedError(ErrorMessage.notFoundEnvironmentType);
  }

  factory Environment.newInstance(EnvironmentType environmentType) {
    _instance ??= Environment._internal(environmentType);
    return _instance!;
  }

  void run() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Injector.prepareDependencies();
    runApp(const Application());
  }
}

Last updated