近期由于某项目需要整理代码,我便借机看看设计模式。
简单工厂模式用的确实很广泛。除了一个基类B,还有对应的若干继承类P1,P2,P3...。此外,还有一个专门与客户交流的类F。这个类F要根据用户的需求创建出相应的不用的继承类对象,因此F类肯定是要跟B,P1,P2,P3...这些类相关的。
对用户而言,只需要与类F交互就好。客户提供的输入是TYPE,也就是想要哪种P (product);
策略模式关注的是行为封装。除了一个基类B,还有对应的若干继承类P1,P2,P3...。此外,还有一个专门与客户交流的类F。当然,这个类F干的事情并不多,F也只跟B类相关,F并没有和P1,P2,P3相关。
对用户而言,与类F交互,但是客户提供的输入是继承类对象,也就是P1,P2,P3...这些对象。所以用户其实是需要知道P1,P2,P3...类名的。
关注用户是否与P1,P2,P3...相关,就能够很好地理解是工厂还是策略模式了。
所以,工厂模式关注的是产品的封装,用户只用与工厂交互就好;策略模式关注的是行为封装,用户是需要与具体的策略打交道的。