CloudCastle Clock

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

Architecture

Layers

Deptrac enforces three layers: contracts (Contract), exceptions (Exception) and implementations; dependencies point inwards only — implementations know contracts, contracts know nothing about implementations.

flowchart TD
    subgraph Contract
        CI[ClockInterface]
        ACI[AdjustableClockInterface]
        SCI[SleepableClockInterface]
    end
    subgraph Exception
        EX[InvalidClockValueException]
    end
    subgraph Implementations
        SYS[SystemClock] --> SCI
        FRZ[FrozenClock] --> ACI
        MCK[MockClock] --> ACI
        MCK --> SCI
        MON[MonotonicClock] --> CI
        OFF[OffsetClock] --> CI
        SCL[ScaledClock] --> CI
        TRC[TruncatingClock] --> CI
        STP[StepClock] --> CI
        QUE[QueueClock] --> CI
        CBK[CallbackClock] --> CI
        ADP[PsrClockAdapter] --> CI
    end
    ACI --> CI
    SCI --> CI
    CI --> PSR[Psr\\Clock\\ClockInterface]
    Implementations --> EX
    VAL[TimeSpan / Deadline / Stopwatch / DatePoint] --> CI

Contracts

Principles


🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano