static void Main(string[] args)
        {
            //setting position of subsucribers(State)
            Position playerPosition = new Position()
            {
                X = 5, Y = 10, Z = 20
            };
            Position refreePosition = new Position()
            {
                X = 2, Y = 7, Z = 9
            };

            //setting position of Publisher(State)
            Position footballPosition = new Position()
            {
                X = 10, Y = 2, Z = 12
            };

            //publisher object
            Football football = new Football();

            //preparing subscribers objects...
            Refree refree = new Refree(football, refreePosition);
            Player player = new Player(football, playerPosition);

            //subscribing player and refree to the football
            football.AttachObserver(player);
            football.AttachObserver(refree);

            ////changing the state of the publisher
            football.Position = footballPosition;

            ////notify subscribers(player, refree,...)
            football.Notify();


            //deatching refree (unsubscribing)
            football.DetachObserver(refree);

            ///notfiy subscriber(player)=>the only one subscribed
            football.Notify();


            Console.WriteLine("American Football  Publisher \n");

            Ball americanFootball = new AmericanFootball();

            //Old Subucribers
            player = new Player(americanFootball, playerPosition);
            refree = new Refree(americanFootball, refreePosition);

            americanFootball.AttachObserver(player);
            americanFootball.AttachObserver(refree);

            americanFootball.Position = new Position()
            {
                X = 45,
                Y = 78,
                Z = 71
            };

            americanFootball.Notify();
        }