/** * Copyright 2021 Sergey Penkovsky * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import 'dart:collection'; import 'package:cherrypick/binding.dart'; import 'package:cherrypick/scope.dart'; /// RU: Класс Module является основой для пользовательских модулей. /// Этот класс нужен для инициализации [Scope]. /// /// RU: The Module class is the basis for custom modules. /// This class is needed to initialize [Scope]. /// abstract class Module { final Set _bindingSet = HashSet(); /// RU: Метод добавляет в коллекцию модуля [Binding] экземпляр. /// /// ENG: The method adds an instance to the collection of the [Binding] module. /// /// return [Binding] Binding bind() { final binding = Binding(); _bindingSet.add(binding); return binding; } /// RU: Метод возвращает коллекцию [Binding] экземпляров. /// /// ENG: The method returns a collection of [Binding] instances. /// /// return [Set] Set get bindingSet => _bindingSet; /// RU: Абстрактный метод для инициализации пользовательских экземпляров. /// В этом методе осуществляется конфигурация зависимостей. /// /// ENG: Abstract method for initializing custom instances. /// This method configures dependencies. /// /// return [void] void builder(Scope currentScope); }