1、工厂模式/工厂方法模式
货车、大巴、小汽车、油罐车。。。。等等, 它们都有共同的基类--车,你不得不知道所有种类的车的具体名字,在需要的地方new **车; 这个时候可以用工厂模式来解决,定义一个Factory类,由其提供的方法CreateVehicle()创建具体的车,当然你得提供一些参数(如:用途),告诉Factory创建那种车。还有一种实现是,Factory只定义接口,有具体的CreateFactory实现对象创建,这是要解决什么?图片来自K_Eckel
2、抽象工厂模式
一辆具体的车可能使用德国的发动机、中国的玻璃。。。。,而这些组件继承自不同基类,abstractFactory为创建一组相关或依赖的对象提供创建接口。