抽象工厂模式
抽象工厂是一种创建型的设计模式,用于创建一系列相关对象。它是对工厂模式的抽象。用一个例子来解释,假设我们有两家工厂:
- nike
- adidas
想象一下你需要买包括运动鞋和运动服的运动套装,大多数时候你想买同一个工厂生产的一套运动套装,比如nike套装或adidas套装。你想要的具体产品是成套的鞋子和短裤,这就是抽象工厂运用的场景,这些产品将由nike或adidas的抽象工厂创建。
以下是工厂接口:
- iSportsFactory - 这个工厂接口由具体工厂nike和adidas来实现
以下是两个产品接口:
- iShoe – 这个接口由具体产品nikeShoe和adidasShoe来实现
- iShort – 这个接口由具体产品nikeShort和adidasShort来实现
现在让我们来看抽象工厂接口iSportsFactory的代码:
![f2da3962b3e959d5ab6a0ccd9ca41e2a.png](https://i-blog.csdnimg.cn/blog_migrate/97c67123cd691006828a2d6534a377b8.jpeg)
以下是具体工厂结构adidas的代码:
![2490e3161e3143c7a725fa34df514053.png](https://i-blog.csdnimg.cn/blog_migrate/dfed83fac02d327b95dcd05006921a98.jpeg)
以下是具体工厂结构nike的代码:
![11d5b5db0379cb926975acaebceb9007.png](https://i-blog.csdnimg.cn/blog_migrate/3a0f7046086dc2ad98d2e2d01dcbf0dd.jpeg)
以下是抽象运动鞋接口iShoe具体运动鞋基结构shoe的代码:
![08b1aa8c656e038bc2a6bd77733357a2.png](https://i-blog.csdnimg.cn/blog_migrate/28e88659418ccd2759149e3a12289d44.jpeg)
以下是具体运动鞋子结构adidasShoe的代码:
![21dad8d5ce0b3873434cb13ced6a93cc.png](https://i-blog.csdnimg.cn/blog_migrate/a2e462df4f6214e9bf4a76f3397e3769.jpeg)
以下是具体运动鞋子结构nikeShoe的代码:
![bce018576adad80063d81b29af871501.png](https://i-blog.csdnimg.cn/blog_migrate/9940c20c545c5e73fa3a3005a401bfa2.jpeg)
以下是抽象运动服接口iShort具体运动服基结构short的代码:
![b649965ae4dfe300998a916dad0a0823.png](https://i-blog.csdnimg.cn/blog_migrate/68a6c0ea8a729f02945750a1c2171203.jpeg)
以下是具体运动服子结构adidasShort的代码:
![beae4183bfe6994e4fb7d6c471d9ef09.png](https://i-blog.csdnimg.cn/blog_migrate/090286f385351db9f2b83c17b7108115.jpeg)
以下是具体运动服子结构nikeShort的代码:
![1c8f08efa5103c866e52a738c2377547.png](https://i-blog.csdnimg.cn/blog_migrate/fe18186f7537564d104f0cf36d6d0b75.jpeg)
以下是main函数代码:
![baacfc9dcc6ea0ebeb8739a09b7325a3.png](https://i-blog.csdnimg.cn/blog_migrate/5dfaaaf6bf5dc4d25e471479723e5a41.jpeg)
结果:
Logo: nike
Size: 14
Logo: nike
Size: 14
Logo: adidas
Size: 14
Logo: adidas
Size: 14