JAVA设计模式二简单工厂模式

来源:互联网 发布:dnf进决斗场网络中断 编辑:程序博客网 时间:2024/05/16 12:32

                                                    简单工厂模式

一 简单工厂模式:就是建立一个工厂类,对实现了同一接口【或者继承同一类】的一些类进行实例的创建。【获取实例的方法返回值为接口或父类对象    用到多态父类引用指向子类   对象】          【一个模式使用了封装继承和多态】

   
共同的实现接口:【带有发送方法的发送器接口】

public interface Sender {      public void Send();  }//发送邮箱的类  public class MailSender implements Sender {          @Override          public void Send() {              System.out.println("this is mailsender!");          }  }   //发送短信的类   public class SmsSender implements Sender {          @Override          public void Send() {              System.out.println("this is sms sender!");          }  }  

如果实现该发送器类多了不好创造每个子类实例,,就需要用到简单工厂模式

单方法工厂类:获取实例方法输入标记  使用if或者switch区分标记分别创造实例返回。

     这样好处:写一个方法,坏处:输入错了type不能返回实例

     解决:使用多方法工厂模式

public class SendFactory {          public Sender produce(String type) {              if ("mail".equals(type)) {                  return new MailSender();              } else if ("sms".equals(type)) {                  return new SmsSender();              } else {                  System.out.println("请输入正确的类型!");                  return null;              }          }  }

多方法工厂类:【单方法工厂类的改进】   多个方法分别获取实例

   public class SendFactory { 

       public Sender produceMail(){ 

           return new MailSender(); 

       } 

       public Sender produceSms(){ 

           return new SmsSender(); 

       } 

静态方法工厂类:【多方法工厂类的改进】将上面的多个工厂方法模式里的方法置为静态的,不需要创建实例,直接调用即可。

   public class SendFactory { 

       public static Sender produceMail(){ 

           return new MailSender(); 

       }  

       public static Sender produceSms(){ 

           return new SmsSender(); 

        } 

}



原创粉丝点击