How to integrate Aave-v3 into my contract and call its functions?

Hi everyone.
I want to design a smartcontract in "goerli testnet" to use aave-v3. In this contract there will be some aave-v3 functions. But I am confused a little about it.

What I am not exactly sure is that if there is any pool contract for aave. And we implement this pool contract with its address in our contract. Then we can call (interact) its functions, supply, withdraw etc. I have a code below for this.

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.9;

import {IPool} from "@aave/core-v3/contracts/interfaces/IPool.sol";

contract Aave {
    IPool public constant pool = IPool(0x88c806c9d3aF1b055e65e68Dc336c0065B6dC807);

    function supply(address token, address user, uint256 amount) public {, amount, user, 0);

    function withdraw(address asset, uint256 amount, address to) external returns (uint256) {
    return pool.withdraw(asset, amount, to);

I am not sure if it is a correct usage. I've found the pool address in aave doc "Pool-Implementation". Here is the doc link;

Can anyone enlighten me about this issue? Thank you in advance..