工厂方法模式适合于对实现了同一接口或继承了同一父类的一些类进行实例的创建。一般是通过定义一个工厂类,并在其方法中实现对具有上述特点的类对象的创建。
一、普通工厂方法模式:
1,共用接口
interface Sender{ public void sender(); }
2.定义实例对象类:
class MailSender implements Sender{ @Override public void send() { System.out.println("发送邮件"); } }
class SmsSender implements Sender{ @Override public void send() { System.out.println("发送短信"); } }
3.定义工厂类:
class SenderFactory { public Sender produce(String type) { if (type.equals("mail")) { return new MailSender(); } else if (type.equals("sms")) { return new SmsSender(); } else { return null; } } }
二、多个工厂方法模式:将上面的工厂类修改一下
class SenderFactory { public Sender produceMail(){ return new MailSender(); } public Sender produceSms(){ return new SmsSender(); } }
三、静态工厂类(推荐使用)
class SenderFactory { public static Sender produceMail(){ return new MailSender(); } public static Sender produceSms(){ return new SmsSender(); } }