Question: On page 281 of the Grand book he describes the idea of using a factory a create the command objects. He says "The indirection allows multiple command issuing objects to transparently share the same command object." and "More important, the indirection makes it easier to have user- customizable menus and toolbars." Explain each of these sentences and tell why it is true. Answer: The first statement I must explain and tell why its true is: "The indirection allows multiple command issuing objects to transparently share the same command object." The indirection referred to is invoking commands through a commandFactory. The sharing referred to is not so much having one command object that multiple objects will point to, but because all the commands are made by one CommandFactory multiple copies of a given command will be the same. That is to say when ever an object needs a “insert” command object (this is only an example any command would do) it goes to the CommandFactory and gets an instance of one. The sentence is true in that because all “insert” commands are coming from the CommandFactory they are the same. The CommandFactory typically will clone them. The second statement I must explain and tell why it is true is: "More important, the indirection makes it easier to have user-customizable menus and toolbars." Again the indirection referred to is invoking commands through a commandFactory. It is true because all that is being manipulated, in customizing of toolbars and menus, is strings. The CommandFactory has a method createCommand that takes a string as an argument and creates the command. To add a new button to a toolbar all that needs to be done is to make a button object that contains the string to be passed to the createCommand of the CommandFactory. To add items to a menu add a new menuItem object that contains the string to be passed to the CommandFactory.