10fbfc30aSopenharmony_ci/**
20fbfc30aSopenharmony_ci * @file Describe the file
30fbfc30aSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
40fbfc30aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
50fbfc30aSopenharmony_ci * you may not use this file except in compliance with the License.
60fbfc30aSopenharmony_ci * You may obtain a copy of the License at
70fbfc30aSopenharmony_ci *
80fbfc30aSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
90fbfc30aSopenharmony_ci *
100fbfc30aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
110fbfc30aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
120fbfc30aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130fbfc30aSopenharmony_ci * See the License for the specific language governing permissions and
140fbfc30aSopenharmony_ci * limitations under the License.
150fbfc30aSopenharmony_ci */
160fbfc30aSopenharmony_ci
170fbfc30aSopenharmony_ciimport { Observer } from './Observer';
180fbfc30aSopenharmony_ci
190fbfc30aSopenharmony_ci/**
200fbfc30aSopenharmony_ci * the interface of Observable
210fbfc30aSopenharmony_ci *
220fbfc30aSopenharmony_ci * @since 2022-09-09
230fbfc30aSopenharmony_ci */
240fbfc30aSopenharmony_ciexport interface Observable {
250fbfc30aSopenharmony_ci  /**
260fbfc30aSopenharmony_ci   * 增加一个观察者
270fbfc30aSopenharmony_ci   */
280fbfc30aSopenharmony_ci  addObserver(observer: Observer);
290fbfc30aSopenharmony_ci
300fbfc30aSopenharmony_ci  /**
310fbfc30aSopenharmony_ci   * 删除一个观察者
320fbfc30aSopenharmony_ci   */
330fbfc30aSopenharmony_ci  removeObserver(observer: Observer);
340fbfc30aSopenharmony_ci
350fbfc30aSopenharmony_ci  /**
360fbfc30aSopenharmony_ci   * 被观察者状态发生改变后,通知订阅的所有观察者更新
370fbfc30aSopenharmony_ci   */
380fbfc30aSopenharmony_ci  notifyChanges(message?: ObservableMessage);
390fbfc30aSopenharmony_ci}
400fbfc30aSopenharmony_ci
410fbfc30aSopenharmony_ciexport interface ObservableMessage {}