Loading

设计模式:工厂方法模式

一.

  在工厂方法模式种,不再由单一的工厂类生产产品,而是由工厂类的子类实现具体产品的创建。当增加一个产品时,只需要增加一个相应的工厂类的子类,实现生产这种产品,便可以解决简单工厂生产太多产品导致其内部代码臃肿的问题。

二.通用写法

抽象产品:

1
2
3
public interface IProduct {
    public void doService();
}

 实现抽象产品:

1
2
3
4
5
6
public class ProductA implements IProduct {
    @Override
    public void doService() {
        System.out.println("ProductA");
    }
}
1
2
3
4
5
6
public class ProductB implements IProduct {
    @Override
    public void doService() {
        System.out.println("ProductB");
    }
}

抽象工厂:

1
2
3
public interface IFactory {
    public IProduct produce();
}

实现抽象工厂:

1
2
3
4
5
6
public class FactoryA implements IFactory {
    @Override
    public IProduct produce() {
        return new ProductA();
    }
}
1
2
3
4
5
6
public class FactoryB implements IFactory {
    @Override
    public IProduct produce() {
        return new ProductB();
    }
}

 测试:

1
2
3
4
5
6
7
public class Test {
    public static void main(String[] args) {
        IFactory factory = new FactoryA();
        IProduct product = factory.produce();
        product.doService();
    }
}

 

 

3.uml类图

 该模式的缺点:

1.类的个数过多,增加复杂度

2.抽象产品只能生产一种产品,可以用抽象工厂模式解决

3.增加系统的抽象性和理解难度。

 

posted @   秋风飒飒吹  阅读(157)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示