1、简单工厂模式重于对象的创建,factory类帮助客户创建对应的子类具体对象,返回一个父类的指针给客户,客户看似对该父类对象操作,但通过多态执行的是实际子类对象的动作。可见,简单工厂模式是隐藏了对象创建的变化,然后返回给客户一个统一的父类对象,然客户接下来去操作这个父类对象吧。
2、策略模式是重于封装一个表面行为的内在的不同算法动作,比如说话,表面都是说话,是一致的,但不同动物所执行的内在说话动作是不一样的,有的是说汉语,有的是瞄,有点是狂吠。而策略模式通过context类来隐藏了内部的动作不一致,给客户一个统一的表面行为接口。而且context自己保存了一个父类引用,该引用不像factory类创建的对象一样,客户是不可以直接对其操作的。context类首先用factory类的创建对象方法给自己创建一个父类对象,然后又自己加了一个统一行为接口,提供给客户,这样客户就可以不用操作具体的父类对象,而创建一个context对象,使用它所提供的统一行为接口了。
3、策略模式相对于简单工厂模式来说,隐藏的更好,客户只需要知道context类即可。而简单工厂模式需要客户知道factory类和父类两个类呢。
4、策略模式:定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。
简单工厂:将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。
5、简单工厂模式和策略模式都生成一个指针,前者是直接返回给用户,后者是保存在context类对象内。所以前者不够安全,后者可以当作智能指针一样对该指针安全操作。