🔎这里是JAVA长虹键法,关注我学习JAVA不迷路
👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️
🗡专栏介绍
【JAVA长虹键法】 主要讲了23种设计模式,本系列专栏会以虹猫蓝兔七侠传的故事为例来给大家详细分析所有模式,希望能给大家带来帮助!
🗡本期介绍
模式: 普通工厂模式
案例: 一个天外陨石(抽象产品),七剑(产品)
一个铸剑传承(抽象工厂),两个铸剑师(工厂)
男铸剑师负责铸造至阳之剑(长虹剑、青光剑、奔雷剑、旋风剑、雨花剑)
女铸剑师负责铸造至阴之剑(冰魄剑、紫云剑)
文章目录

👀什么是工厂模式
在《【JAVA长虹键法】第三式 简单工厂模式》一期中我们介绍了简单工厂模式,提到了简单工厂模式违背了开闭原则,而“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。
🗡优点
🗡缺点
🗡应用场景
👀普通工厂的实现
案例的主要角色如下:
抽象工厂(Abstract Factory):铸剑传承
工厂(SimpleFactory):男铸剑师、女铸剑师
抽象产品(Product):天外陨石(铸剑的原材料)
具体产品(ConcreteProduct):长虹剑、青光剑、奔雷剑、旋风剑、雨花剑、冰魄剑、紫云剑
🗡抽象产品、产品
Ss接口(天外陨石):
public interface Ss {
void show();
}
Aa类实现接口Ss(长虹剑):
public class Aa implements Ss {
@Override
public void show() {
System.out.println("打造了一把长虹剑");
}
}
Bb类实现接口Ss(冰魄剑):
public class Bb implements Ss {
@Override
public void show() {
System.out.println("打造了一把冰魄剑");
}
}
Cc类实现接口Ss(紫云剑):
public class Cc implements Ss {
@Override
public void show() {
System.out.println("打造了一把紫云剑");
}
}
Dd类实现接口Ss(雨花剑):
public class Dd implements Ss {
@Override
public void show() {
System.out.println("打造了一把紫云剑");
}
}
Ee类实现接口Ss(青光剑):
public class Ee implements Ss {
@Override
public void show() {
System.out.println("打造了一把紫云剑");
}
}
Ff类实现接口Ss(奔雷剑):
public class Ff implements Ss {
@Override
public void show() {
System.out.println("打造了一把紫云剑");
}
}
Gg类实现接口Ss(旋风剑):
public class Gg implements Ss {
@Override
public void show() {
System.out.println("打造了一把紫云剑");
}
}
🗡抽象工厂、工厂
Zz接口(铸剑传承):
public interface Zz {
Ss abc(String a);
}
Nan类实现接口Zz(男铸剑师):
public class Nan implements Zz {
private static Ss ss;
public Ss abc(String a) {
if ("长虹剑".equals(a)) {
ss = new Aa();
} else if ("奔雷剑".equals(a)) {
ss = new Ff();
} else if ("青光剑".equals(a)) {
ss = new Ee();
} else if ("雨花剑".equals(a)) {
ss = new Dd();
} else if ("旋风剑".equals(a)) {
ss = new Gg();
} else {
System.out.println("铸剑失败");
}
return ss;
}
}
Nv类实现接口Zz(女铸剑师):
public class Nv implements Zz {
private static Ss ss;
public Ss abc(String a) {
if ("冰魄剑".equals(a)) {
ss = new Bb();
} else if ("紫云剑".equals(a)) {
ss = new Cc();
} else {
System.out.println("铸剑失败");
}
return ss;
}
}
🗡测试
测试类:
public class Demo {
public static void main(String[] args) {
System.out.println("---------至阳之剑-------------");
//男铸剑师
Nan nan = new Nan();
Ss aa = nan.abc("长虹剑");
Ss dd = nan.abc("雨花剑");
Ss ee = nan.abc("青光剑");
Ss ff = nan.abc("奔雷剑");
Ss gg = nan.abc("旋风剑");
aa.show();
dd.show();
ee.show();
ff.show();
gg.show();
System.out.println("---------至阴之剑-------------");
//女铸剑师
Nv nv = new Nv();
Ss bb = nv.abc("冰魄剑");
Ss cc = nv.abc("紫云剑");
bb.show();
cc.show();
}
}
下期预告
模式: 抽象工厂模式
案例: 七侠师傅和师母为七侠打造七剑和培养小灵鸽