java设计模式-----3、抽象工厂模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java设计模式-----3、抽象工厂模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3093字,纯文字阅读大概需要5分钟。
内容图文
抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。
产品族
1 public abstract class Apple implements Fruit{ 2publicabstractvoid get(); 3 }
香蕉
1 public abstract class Banana implements Fruit{ 2publicabstractvoid get(); 3 }
在写苹果香蕉的具体产品,并各自继承对应的抽象类
北方苹果
1 public class NorthApple extends Apple { 2 @Override 3publicvoid get() { 4 System.out.println("采集北方苹果"); 5 } 67 }
南方苹果
public class SouthApple extends Apple{ @Override publicvoid get() { System.out.println("采集南方苹果"); } }
北方香蕉
public class NorthBanana extends Banana { @Override publicvoid get() { System.out.println("采集北方香蕉"); } }
南方香蕉
1 public class SouthBanana extends Banana { 2 @Override 3publicvoid get() { 4 System.out.println("采集南方香蕉"); 5 } 6 }
接下来创建工厂,而每一个产品族都对应一个具体的工厂,每个产品族都包含苹果和香蕉,所以每个工厂中都包含苹果和香蕉
抽象工厂
1 public interface FruitFactory { 2 // 实例化一个苹果 3 public Fruit getApple(); 4 // 实例化一个香蕉 5 public Fruit getBanana(); 6 }
1 public class NorthFactory implements FruitFactory{ 2 @Override 3public Fruit getApple() { 4returnnew NorthApple(); 5 } 6 7 @Override 8public Fruit getBanana() { 9returnnew NorthBanana(); 10 } 11 }
1 public class SouthFactory implements FruitFactory{ 2 @Override 3public Fruit getApple() { 4returnnew SouthApple(); 5 } 6 7 @Override 8public Fruit getBanana() { 9returnnew SouthBanana(); 10 } 11 }
最后,写一个运行的主方法
1 public class MainClass { 2 public static void main(String[] args) { 3 FruitFactory nf = new NorthFactory(); 4 5 Fruit nApple = nf.getApple(); 6 nApple.get(); 7 8 Fruit nBanana = nf.getBanana(); 9 nBanana.get(); 1011 FruitFactory sf = new SouthFactory(); 1213 Fruit sApple = sf.getApple(); 14 sApple.get(); 1516 Fruit sBanana = sf.getBanana(); 17 sBanana.get(); 18 } 19 }
采集北方苹果
采集北方香蕉
采集南方苹果
采集南方香蕉
这时如果想新增一个产品族热带水果,只需新建一个热带产品族的工厂即可,已经建好的南方与北方工厂无需改动,也符合开放-封闭原则。
但缺点也很明显,从产品等级来看,如果想新增一个产品等级,例如上面的例子只有苹果与香蕉,如果现在新增一个葡萄,就需要在抽象工厂中添加一个葡萄抽象方法,再在每一个具体工厂中实现此方法。这样就完全不符合开放-封闭原则了。
抽象工厂模式中包含的角色及其职责
原文:https://www.cnblogs.com/xiaobai1226/p/8483480.html
内容总结
以上是互联网集市为您收集整理的java设计模式-----3、抽象工厂模式全部内容,希望文章能够帮你解决java设计模式-----3、抽象工厂模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。