抽象工厂模式是一种比工厂模式抽象程度更高的模式。简而言之,抽象工厂类和工厂类的原理相同,只不过工厂类返回的是普通类的实例;而抽象工厂类返回的是一个工厂类的实例。
我们假设有宠物收留站,太有很多的科室,我们现在写一个办法让他可以在各个科室通用的项目
首先我们需要创建一个父类宠物类
我们实现一下,就拿猫和狗来举例吧
可是我们不知道我们要写的是给哪个科室的,所以我们使用一个接口
方面也会进行维护和扩张,把我们需要的方法仍进去
我们去实现接口
我们定义2个串可以根据不同情况进行更换。
那我们在界面上就可以直接使用了,我们不需要知道是怎么创建的,只需要知道有个
接口的方法可以实现创建我们需要的实体工厂类就可以了。具体的工厂里面有什么
因为不是重点我就绕过了。
这样就可以实现了不知道是什么科室都可以使用了。
其实大家看我们这里如果换到其他科室是需要更换工厂类里的字符串,和使用switch
如果产生新的宠物类型,我们的这个都需要修改,有没有什么办法可以避免呢?
有的,我们可以结合前面所学过的简单工厂来处理,使用反射来解决
前台只需要在配置文件里修改就可以使用于本科室的使用了
这样我们就可以实现在不改动程序主体的情况下,动态的修改实现了不同科室的使用。
不同的科室只需要在XML里修改value的值就可以了。
好了,抽象工厂就说到这里了,有什么不足和需要指正的地方请留言,谢谢