抽象工厂模式是一种创建模式,用于当需要时返回一系列相关类中的某一个,而每一个类都能根据需要返回不同的对象时使用。它可以快速得创建产品实例,使提升了应用程序的可扩展性,减少模块之间的耦合。
抽象工厂模式包括 4 种对象。( 1 )抽象工厂接口或类,它的创建与应用程序业务逻辑无关,通常使用接口或者抽象类实现。( 2 )具体工厂类 , 它们的创建与业务逻辑有着密切的关系,通常使用具体的类实现。通过调用类中的方法可获得具体的产品实例。( 3 )抽象产品接口或类,该对象包括具体产品的父类,或者具体产品所实现的接口,所以定义内容与业务逻辑有密切相关。( 4 )具体的产品类,它们继承产品抽象类或实现产品接口。
<!-- google_ad_client = "pub-6628499292856412"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "text_image"; //2006-11-30: searcher google_ad_channel = "4208091623"; google_color_border = "6131BD"; google_color_bg = "FFFFFF"; google_color_link = "C94093"; google_color_text = "000000"; google_color_url = "008000"; //--><iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-6628499292856412&dt=1174305596265&lmt=1174305596&prev_fmts=728x90_as&format=468x60_as&output=html&channel=4208091623&url=http%3A%2F%2Fwww.cnblogs.com%2Fxuanfeng%2Farchive%2F2006%2F12%2F03%2F580348.html&color_bg=FFFFFF&color_text=000000&color_link=C94093&color_url=008000&color_border=6131BD&ad_type=text_image&ref=http%3A%2F%2Fwww.cnblogs.com%2Fxuanfeng%2F&cc=474&u_h=800&u_w=1280&u_ah=770&u_aw=1280&u_cd=32&u_tz=480&u_his=1&u_java=true" frameborder="0" width="468" scrolling="no" height="60" allowtransparency="allowtransparency"></iframe>
抽象工厂模式包括 4 种对象。( 1 )抽象工厂接口或类,它的创建与应用程序业务逻辑无关,通常使用接口或者抽象类实现。( 2 )具体工厂类 , 它们的创建与业务逻辑有着密切的关系,通常使用具体的类实现。通过调用类中的方法可获得具体的产品实例。( 3 )抽象产品接口或类,该对象包括具体产品的父类,或者具体产品所实现的接口,所以定义内容与业务逻辑有密切相关。( 4 )具体的产品类,它们继承产品抽象类或实现产品接口。
( 抽象工厂模式静态结构图)
( PetShop4.0 中的简单抽象工厂模式静态结构图)
<!-- google_ad_client = "pub-6628499292856412"; google_ad_width = 468; google_ad_height = 60; google_ad_format = "468x60_as"; google_ad_type = "text_image"; //2006-11-30: searcher google_ad_channel = "4208091623"; google_color_border = "6131BD"; google_color_bg = "FFFFFF"; google_color_link = "C94093"; google_color_text = "000000"; google_color_url = "008000"; //--><iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-6628499292856412&dt=1174305596265&lmt=1174305596&prev_fmts=728x90_as&format=468x60_as&output=html&channel=4208091623&url=http%3A%2F%2Fwww.cnblogs.com%2Fxuanfeng%2Farchive%2F2006%2F12%2F03%2F580348.html&color_bg=FFFFFF&color_text=000000&color_link=C94093&color_url=008000&color_border=6131BD&ad_type=text_image&ref=http%3A%2F%2Fwww.cnblogs.com%2Fxuanfeng%2F&cc=474&u_h=800&u_w=1280&u_ah=770&u_aw=1280&u_cd=32&u_tz=480&u_his=1&u_java=true" frameborder="0" width="468" scrolling="no" height="60" allowtransparency="allowtransparency"></iframe>
(IDAL 项目类图 )
从上面可以看出 PetShop4.0 中有五个业务要处理需要定义五个相对应的类,而每个类都需要根据不同需要而返回不同的对象。所以,很适合使用抽象工厂模式去解决。