Abstract Factory 抽象工厂 Factory Method 工厂方法

工厂模式

任何可以产生对象的方法或类,都可以称之为工厂(比如单例模式的getInstance就是静态工厂)
和new对比的优点

  1. 灵活控制生产过程
  2. 权限、修饰、日志

    工厂方法模式

    1. //接口
    2. public interface sender {
    3. public void sender();
    4. }
    5. //邮件实现类
    6. public class MailSender implements sender {
    7. @Override
    8. public void sender() {
    9. System.out.println("发送邮件");
    10. }
    11. }
    12. //短信实现类
    13. public class SmsSender implements sender {
    14. @Override
    15. public void sender() {
    16. System.out.println("发送短信");
    17. }
    18. }
    19. //创建实现同一接口的类的实例
    20. public class Factory {
    21. public sender produceMile(){
    22. return new MailSender();
    23. }
    24. public sender produceSms(){
    25. return new SmsSender();
    26. }
    27. }

    抽象工厂模式

    1. // 对工厂类进行抽象,创建多个工厂类
    2. public interface Provider {
    3. public Sender produce();
    4. }
    5. public class SendMailFactory implements Provider {
    6. @Override
    7. public Sender produce(){
    8. return new MailSender();
    9. }
    10. }
    11. public class SendSmsFactory implements Provider{
    12. @Override
    13. public Sender produce() {
    14. return new SmsSender();
    15. }
    16. }