ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
抽象工厂模式(Abstract Factory):抽象工厂--顾名思义,就是把工厂抽象出来,不同的工厂生产不同的产品。这样做有个好处:一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。 ### 一、uml建模图: ![](https://box.kancloud.cn/2016-02-19_56c7196d53735.jpg) ### 二、代码实现 ~~~ /** * 示例:抽象工厂--顾名思义,就是把工厂抽象出来,不同的工厂生产不同的产品 * * 优点:一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码 */ interface Sender { public void send(); } class EmailSender implements Sender { @Override public void send() { System.out.println("this is a email..."); } } class SmsSender implements Sender { @Override public void send() { System.out.println("this is a sms..."); } } /** * 角色:抽象工厂 */ interface AbstractFactory { public Sender produce(); } /** * 邮件工厂 */ class EmailSendFactory implements AbstractFactory { @Override public Sender produce() { return new EmailSender(); } } /** * 短信工厂 */ class SmsSendFactory implements AbstractFactory { @Override public Sender produce() { return new SmsSender(); } } /** * 客户端测试类 * * @author Leo */ public class Test { public static void main(String[] args) { /** * 创建工厂 */ AbstractFactory factory = new SmsSendFactory(); /** * 生产产品 */ Sender sender = factory.produce(); /** * 执行业务逻辑 */ sender.send(); } } ~~~ ###三、总结 如果你现在想增加一个功能:给特别关注的好友发信息,则只需做一个实现类,实现Sender接口,同时做一个工厂类,实现AbstractFactory接口,就可以了,无需修改现有代码。这样做拓展性较好!