抽象工厂
抽象工厂
用来创建工厂的工厂,超级工厂
抽象工厂接口
public interface ProductFactory {
PhoneProduct phoneProduct();
RouterProduct routerProduct();
}
具体工厂类
//小米工厂
public class XiaomiFactory implements ProductFactory{
@Override
public PhoneProduct phoneProduct() {
return new XiaomiPhone();
}
@Override
public RouterProduct routerProduct() {
return new XiaomiRouter();
}
}
//华为工厂
public class HuaweiFactory implements ProductFactory{
@Override
public PhoneProduct phoneProduct() {
return new HuaweiPhone();
}
@Override
public RouterProduct routerProduct() {
return new HuaweiRouter();
}
}
抽象产品接口
//手机接口
public interface PhoneProduct {
void start();
void shut();
void call();
void send();
}
//路由器接口
public interface RouterProduct {
void start();
void shut();
void openWifi();
void setting();
}
具体产品类
//小米手机
public class XiaomiPhone implements PhoneProduct{
@Override
public void start() {
System.out.println("小米手机开机");
}
@Override
public void shut() {
System.out.println("小米手机关机");
}
@Override
public void call() {
System.out.println("小米手机打电话机");
}
@Override
public void send() {
System.out.println("小米手机发短信机");
}
}
//小米路由器
public class XiaomiRouter implements RouterProduct{
@Override
public void start() {
System.out.println("小米路由器开机");
}
@Override
public void shut() {
System.out.println("小米路由器关机机");
}
@Override
public void openWifi() {
System.out.println("小米路由器wifi");
}
@Override
public void setting() {
System.out.println("小米路由器设置");
}
}
//华为手机
public class HuaweiPhone implements PhoneProduct{
@Override
public void start() {
System.out.println("华为手机开机");
}
@Override
public void shut() {
System.out.println("华为手机关机");
}
@Override
public void call() {
System.out.println("华为手机打电话机");
}
@Override
public void send() {
System.out.println("华为手机发短信机");
}
}
//华为路由器
public class HuaweiRouter implements RouterProduct{
@Override
public void start() {
System.out.println("华为路由器开机");
}
@Override
public void shut() {
System.out.println("华为路由器关机机");
}
@Override
public void openWifi() {
System.out.println("华为路由器wifi");
}
@Override
public void setting() {
System.out.println("华为路由器设置");
}
}
客户端
//客户端
public class Consumer {
public static void main(String[] args) {
System.out.println("===========小米==============");
XiaomiFactory xiaomiFactory = new XiaomiFactory();
PhoneProduct xiaomiPhone = xiaomiFactory.phoneProduct();
xiaomiPhone.call();
xiaomiPhone.send();
RouterProduct xiaomiRouter = xiaomiFactory.routerProduct();
xiaomiRouter.openWifi();
xiaomiRouter.setting();
System.out.println("===========华为==============");
HuaweiFactory huaweiFactory = new HuaweiFactory();
PhoneProduct huaweiPhone = huaweiFactory.phoneProduct();
huaweiPhone.call();
huaweiPhone.send();
RouterProduct huaweiRouter = huaweiFactory.routerProduct();
huaweiRouter.openWifi();
huaweiRouter.setting();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY