抽象工厂(Abstract Factory)

2018-09-26  本文已影响0人  tingshuo123
邮差
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接口就可以了,无需修改现有代码。

上一篇 下一篇

猜你喜欢

热点阅读