简单工厂:把类的实例化转移到工厂类中
[img]/upload/attachment/124591/cb58365e-ba3f-33f4-a710-945c2c6ae05a.bmp[/img]
抽象工厂:把类的实例化转移到具体的工厂类中
[img]/upload/attachment/124597/89121cff-7e04-3d6a-b3ab-1e7f9188c234.png[/img]
区别:在要增加一个具体商品类时,简单工厂要修改工厂类,并且在客户端修改多处create放法。工厂模式只要增加个一个具体工厂类,并且客户端可能只要修改一处,遵循了“开放-封闭”原则。但是工厂模式同样增加了开发量。
抽象工厂:工厂类中提供实例化多个类的方法。
[img]/upload/attachment/124601/a9f4bc07-a1a5-3d23-8e06-38411f22b9a5.png[/img]
还是要修改多处 new Factory( )的方法。
目标:修改最少
方法:运用编程语言支持的“反射”技术,直接用简单工厂模式。
过程:new Factory()可以换成 Class.forName(“name”).instance之类的方法。
还可以将“name”移到配置文件里面。
[img]/upload/attachment/124591/cb58365e-ba3f-33f4-a710-945c2c6ae05a.bmp[/img]
抽象工厂:把类的实例化转移到具体的工厂类中
[img]/upload/attachment/124597/89121cff-7e04-3d6a-b3ab-1e7f9188c234.png[/img]
区别:在要增加一个具体商品类时,简单工厂要修改工厂类,并且在客户端修改多处create放法。工厂模式只要增加个一个具体工厂类,并且客户端可能只要修改一处,遵循了“开放-封闭”原则。但是工厂模式同样增加了开发量。
抽象工厂:工厂类中提供实例化多个类的方法。
[img]/upload/attachment/124601/a9f4bc07-a1a5-3d23-8e06-38411f22b9a5.png[/img]
还是要修改多处 new Factory( )的方法。
目标:修改最少
方法:运用编程语言支持的“反射”技术,直接用简单工厂模式。
过程:new Factory()可以换成 Class.forName(“name”).instance之类的方法。
还可以将“name”移到配置文件里面。