抽象工厂模式与工厂方法模式有哪些不同之处,Java抽象工厂
这篇文章带给你一些关于java的知识,主要是关于抽象工厂。根据实例学习什么是抽象工厂。下面就来看看吧,希望对你有帮助。
如何解决写爬虫IP受阻的问题?立即使用。
什么是抽象工厂模式
抽象工厂(AbstractFactory)模式的定义:是一个模式结构,它为访问类提供了一个接口,用于创建一组相关或相互依赖的对象,访问类可以获得同一系列的不同级别的产品,而无需指定所需产品的特定类。
满足条件:
系统中有多个产品系列,每个特定工厂都创建相同系列但属于不同层次结构的产品。系统一次只能消耗一个家族的产品,也就是说,同一个家族的产品可以一起使用。
优点:
可以在类内共同管理产品族中的多级产品,而不是引入几个新的类来管理。
当需要一个产品族时,抽象工厂可以保证客户端始终只使用同一产品的产品组。
抽象工厂增强了程序的可扩展性。当添加新的产品系列时,不需要修改原始代码来满足开放封闭原则。
缺点:
当需要向产品系列中添加新产品时,需要修改所有工厂类。增加了系统的抽象性和理解难度。
抽象工厂的实现
案例的主要角色如下:抽象工厂(Abstract Factory):七侠传承工厂(SimpleFactory):师傅、师娘抽象产品(Product):天外陨石(铸剑原料)、一窝鸽子蛋(未孵化鸽子)具体产品(ConcreteProduct):七剑。七只精神鸽
案例:
师父有七侠传承,能造至尊孙之剑,能培养雄鸽。
师娘有七侠之传承,能打造阴魂之剑,培养母鸽。
七侠要求他们的主人和老师自己造剑,收养自己的小鸽子。
抽象产品、产品
S1接口(天外陨石):
公共接口S1 {
void show();}S2接口(一窝灵鸽蛋):
公共接口S2 {
void show();}A1类实现接口S1(长虹剑):
公共类A1实现S1 {
@覆盖
公共void show() {
System.out.println(造了一把长虹剑);
}}B1类实现接口S1(冰魄剑):
公共类B1实现S1 {
@覆盖
公共void show() {
System.out.println(造了一把冰冷的剑);
}}C1类实现接口S1(紫云剑):
公共课C1实现S1 {
@覆盖
公共void show() {
System.out.println(造了一把紫云剑);
}}D1类实现接口S1(雨花剑):
公共课D1实现S1 {
@覆盖
公共void show() {
System.out.println(造了一把紫云剑);
}}E1类实现接口S1(青光剑):
公共课E1实现S1 {
@覆盖
公共void show() {
System.out.println(造了一把紫云剑);
}}F1类实现接口S1(奔雷剑):
公共类F1实现S1 {
@覆盖
公共void show() {
System.out.println(造了一把紫云剑);
}}G1类实现接口S1(旋风剑):
公共课G1实现S1 {
@覆盖
公共void show() {
System.out.println(造了一把紫云剑);
}}A2类实现接口S2(灵鸽一号):
公共类A2实现S2 {
@覆盖
公共void show() {
System.out.println(凌哥7号);
}}B2类实现接口S2(灵鸽二号):
公共课B2实现S2 {
@覆盖
公共void show() {
System.out.println(凌哥7号);
}}C2类实现接口S2(灵鸽三号):
公共课C2实现S2 {
@覆盖
公共void show() {
System.out.println(凌哥7号);
}}D2类实现接口S2(灵鸽四号):
公共课D2实现S2 {
@覆盖
公共void show() {
System.out.println(凌哥7号);
}}E2类实现接口S2(灵鸽五号):
公共类E2实现S2 {
@覆盖
公共void show() {
System.out.println(凌哥7号);
}}F2类实现接口S2(灵鸽六号):
公共类F2实现S2 {
@覆盖
公共void show() {
System.out.println(凌哥7号);
}}G2类实现接口S2(灵鸽七号):
公共类G2实现S2 {
@覆盖
公共void show() {
System.out.println(凌哥7号);
}}
抽象工厂、工厂
Zz接口(七侠传承):
公共接口Zz {
S1 abc1(字符串a);
S2 abc2(字符串a);}Nan类实现接口Zz(师傅):
公共类Nan实现Zz {
私有静态S1 S1;
私人静态S2S2;
公共S1 abc1(字符串a) {
如果(长虹剑。等于(一)){
S1=新A1();
} else if(奔雷剑。等于(一)){
s1=新f1();
} else if(青光剑。等于(一)){
s1=新E1();
} else if(雨花剑。等于(一)){
s1=新D1();
} else if(旋风剑。等于(一)){
s1=新G1();
}否则{
System.out.println(铸剑失败);
}
返回S1;
}
公共S2 abc2(字符串a) {
如果(灵鸽一号。等于(一)){
S2=新A2();
} else if(灵鸽二号。等于(一)){
S2=新F2();
} else if(灵鸽三号。等于(一)){
s2=新E2();
} else if(灵鸽四号。等于(一)){
s2=新D2();
} else if(灵鸽五号。等于(一)){
s2=新G2();
}否则{
System.out.println(领养失败);
}
返回S2;
}}Nv类实现接口Zz(师娘):
公共类女实现Zz {
私有静态S1S1;
私人静态S2S2;
公共S1 abc1(字符串a) {
如果(冰魄剑。等于(一)){
S1=新B1();
} else if(紫云剑。等于(一)){
s1=新C1();
}否则{
System.out.println(铸剑失败);
}
返回S1;
}
公共S2 abc2(字符串a) {
如果(灵鸽六号。等于(一)){
s2=新B2();
} else if(灵鸽七号。等于(一)){
s2=新C2();
}否则{
System.out.println(领养失败);
}
返回S2;
}}测试
测试类:
公开课演示{
公共静态void main(String[] args) {
System.out.println( -至阳传承- );
//师傅
楠楠=新楠();
//造剑
S1 a1=nan.abc1(长虹剑);
S1 d1=nan.abc1(雨花剑);
S1 e1=nan.abc1(青光剑);
S1 f1=nan.abc1(奔雷剑);
S1 g1=nan.abc1(旋风剑);
//养鸽子
S2 a2=nan.abc2(灵鸽一号);
S2 d2=nan.abc2(灵鸽二号);
S2 e2=nan.abc2(灵鸽三号);
S2 f2=nan.abc2(灵鸽四号);
S2 g2=nan.abc2(灵鸽五号);
a1。show();
D1。show();
E1。show();
f1。show();
G1。show();
a2。show();
D2。show();
E2。show();
F2。show();
G2。show();
System.out.println( -至阴传承- );
//女铸剑师
Nv Nv=new Nv();
S1 b1=nv.abc1(冰魄剑);
S1 c1=nv.abc1(紫云剑);
B1。show();
C1。show();
S2 b2=nv.abc2(灵鸽六号);
S2 c2=nv.abc2(灵鸽七号);
B2。show();
C2。show();
}}推荐学习: 《java视频教程》 以上就是实例详解爪哇岛抽象工厂模式的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。