美文网首页
抽象工厂(Abstract Factory)

抽象工厂(Abstract Factory)

作者: tingshuo123 | 来源:发表于2018-09-26 20:37 被阅读0次
邮差
public interface Sender {
    
    /**
     * 发送信息
     */
    public void send();
}

邮件发送
package abstract_factory;

public class EmailSender implements Sender{

    @Override
    public void send() {
        
        System.out.println("通过电子邮件发送");
    }

}

短息发送
public class SmsSender implements Sender{

    @Override
    public void send() {
        System.out.println("通过短信发送");
        
    }

}

以上是产品


抽象工厂
/**
 * 抽象工厂
 */
public interface AbstractFactory {
    
    public Sender produce();
}

邮件工厂
/**
 * 邮件工厂
 */
public class EmailSendFactory implements AbstractFactory {

    @Override
    public Sender produce() {
        
        return new EmailSender();
    }

}
短信工厂
/**
 * 短信工厂
 */
public class SmsSendFactory implements AbstractFactory {

    @Override
    public Sender produce() {
        
        return new SmsSender();
    }
}
测试类
    @Test
    public void EmailTest() {
        
        // 创建邮件工厂
        AbstractFactory factory = new EmailSendFactory();
        
        // 生产产品
        Sender sender = factory.produce();
        
        // 执行业务
        sender.send();
    }
    
    @Test
    public void smsTest() {
        
        // 创建短信工厂
        AbstractFactory factory = new SmsSendFactory();
        
        // 生产产品
        Sender sender = factory.produce();
        
        // 执行业务
        sender.send();
    }
}

如果想再添加一个用车马发送消息的邮差,只需要添加一个车马类,实现 Sender 接口,然后在创建一个生产车马的工厂类,实现AbstractFactory接口就可以了,无需修改现有代码。

相关文章

网友评论

      本文标题:抽象工厂(Abstract Factory)

      本文链接:https://www.haomeiwen.com/subject/etijoftx.html