工厂模式

来源:互联网 发布:文件隐藏软件 编辑:程序博客网 时间:2024/06/01 08:39

简单工厂模式

public interface ImpSender {    public void Send();}
public class MailSender implements ImpSender{    @Override    public void Send(){        System.out.println("this is mailsender!");    }}
public class SmsSender implements ImpSender{    @Override    public void Send(){        System.out.println("this is smssender");    }}
public class SendFactory{    public ImpSender productMail(){        return new MailSender();    }    public ImpSender productSms(){        return new SmsSender();    }}
public class FactoryTest{    public static void main(String[] args){        SendFactory factory = new SendFactory();        ImpSender sender = factory.productMail();        sender.Send();    }}

抽象工厂模式

public interface Sender{    public void Send();}
public interface Provider{    public Sender produce();}
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 mailsender!");    }}
public class SendMailFactory implements Provider{    @Override    public Sender produce(){        return new MailSender();    }}
public class SendSmsFactory implements Provider{    @Override    public Sender produce(){        return new SmsSender();    }}
public class Test{    public static void main(String[] args){        Provider provider = new SendMailFactory();        Sender sender = provider.produce();        sender.Send();    }}

静态工厂模式

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!");    }}
public class SendFactory{    public static Sender produceMail(){        return new MailSender();    }    public static Sender produceSms(){        return new SmsSender();    }}
public class FactoryTest{    public static void main(String[] args){        Sender sender = SendFactory.produceMail();        sender.Send();    }}
0 0