23种设计模式之工厂模式

工厂模式简单来讲就是设计一个工厂类,提供一个生产类实例的接口
至于如何设计呢。
1 一个工厂方法:工厂方法通过参数来判断我要返回哪个类的实例

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

2 多个工厂方法模式:对于每种类型都提供一个工厂方法

public class SendFactory 
{  
    public Sender produceMail()
    {  
        return new MailSender();  
    }  
    public Sender produceSms()
    {  
        return new SmsSender();  
    }  
}  

3 静态工厂方法模式:没什么特殊意思,工厂方法写成静态的,方便调用。

public class SendFactory 
{  
    public static Sender produceMail()
    {  
        return new MailSender();  
    }  
    public static Sender produceSms()
    {  
        return new SmsSender();  
    }  
}  

4 抽象工厂模式:

对象接口:

public interface Sender {  
    public void Send();  
}  

工厂接口:

public interface Provider {  
    public Sender produce();  
}  

对于每一个Sender对象的子类,我都提供一个对应的工厂类负责提供其实例对象。
形如:

Sender实现类:

public class SmsSender implements Sender {  
    @Override  
    public void Send() {  
        System.out.println("this is sms sender!");  
    }  
}  

对应的工厂类:

public class SendSmsFactory implements Provider{  

    @Override  
    public Sender produce() {  
        return new SmsSender();  
    }  
}   

如果再来一个实现类,就再来一个工厂类,这样的好处是,每次新增新的Sender类型时,原来的代码是不用任何修改的。

参考资料:Java之美[从菜鸟到高手演变]之设计模式

你可能感兴趣的:(设计模式)