简单工厂模式,工厂模式和抽象工厂模式
SFP(Simple Factory Pattern)通常是根据提供给它的数据,来返回几个可能类中的一个类的实例。通常它返回的类都有个一个共同的父类和方法,但每个方法的任务不同,而且根据不同的数据进行了优化。
例子1:通过输入不同格式的名字来返回你的firstname和lastname:
首先是父类:
按照概念,应该有两个或以上的子类来继承父类:
最后是简单工厂类,通过它来判断应该选择哪个子类来执行:
运行结果:
例子2:快速傅里叶变换:
因为在快速傅里叶变换中当y为零时计算公式比较特殊,所以我们可以把普通情况和特殊的y=0情况视为和上面那个例子中的firstfirst和lastfirst两种相似的情况。
经过80次变换后的最终结果:
工厂方法模式:
FMP(Factory Method Pattern)在SFP上升级了,它不再去使用一个类来决定实例化哪个子类,相反超类把决定权延续到每个子类。
例子:
抽象类中定义了很多方法,子类中国重载它的某些方法来实现特殊的功能,例如: