001    package sysModel;
002    
003    import model.ILambda;
004    import sysModel.env.AGlobalEnv;
005    import sysModel.fish.AFish;
006    
007    /**
008     * Interface for a factory to create a notify lambda.
009     *
010     * @author Mathias Ricken
011     */
012    public interface ICmdFactory {
013        /**
014         * Create a lambda that notifies all observers and sends them the lambda given as parameter.
015         *
016         * @param lambda lambda for the observers
017         * @return notify lambda
018         */
019        public ILambda makeNotifyCmd(ILambda lambda);
020    
021        /**
022         * Create a lambda that notifies all observers to check if they are at the specified location and, if so, remove
023         * themselves from the observer.
024         *
025         * @param env local environment at which fish should be deleted
026         * @return delete lambda
027         */
028        public ILambda makeDeleteCmd(AGlobalEnv.ALocalEnv env);
029    
030        /**
031         * Create a lambda that adds a new fish to the observable.
032         *
033         * @param fish fish to add
034         * @return add lambda
035         */
036        public ILambda makeAddCmd(AFish fish);
037    }