001    package logic;
002    
003    public class BooleanFactory implements IBooleanFactory {
004      
005      public static final BooleanFactory Singleton = new BooleanFactory();
006      
007      private BooleanFactory(){}
008      
009      private static IBoolean trueBoolean = new IBoolean() {
010        public Object execute(IBooleanAlgo algo, Object... inp) {
011          return algo.trueCase(this, inp);
012        }
013      };
014      
015      private static IBoolean falseBoolean = new IBoolean() {
016        public Object execute(IBooleanAlgo algo, Object...inp) {
017          return algo.falseCase(this, inp);
018        }
019      };
020      
021      public IBoolean makeBoolean(boolean b) {
022        return b ? trueBoolean : falseBoolean;
023      }
024    }