设计模式一、工厂模式

设计模式part1

工厂方法模式

工厂方法模式分为三种:1、普通工厂模式 2、多个工厂方法模式 3、静态工厂方法模式

1)    普通工厂模式

就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建

缺点:如果字符串输入不对应就会创建错误


javaSender

publicinterface Sender {

    void send();

}


javaSmsSender

publicclass SmsSender implements Sender{

 

    @Override

    publicvoid send() {

        System.out.println("sms sender");

    }

 

}


 

javaMailSender

publicclass MailSender implements Sender{

 

    @Override

    publicvoid send() {

        System.out.println("mail sender");

    }

 

}


 

javaSendFactory

publicclass SendFactory {

   

    public Sender produce(Stringstr){

        if("sms".equals(str)){

            returnnew SmsSender();

        }elseif("mail".equals(str)){

            returnnew MailSender();

        }else{

            System.out.println("未选择类型");

            returnnull;

        }

    }

   

}


javaMainTest

publicclass MainTest {

    publicstaticvoid main(String[] args) {

        SendFactoryfactory = new SendFactory();

        Sendersender = factory.produce("sms");

       sender.send();

    }

}

 


 

 

 

2)    多个工厂方法模式

是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象

Note:对普通工厂进行改进,使用不通的方法创建不同的对象

 

javaSender

publicinterface Sender {

    void send();

}


javaSmsSender

publicclass SmsSender implements Sender{

 

    @Override

    publicvoid send() {

        System.out.println("sms sender");

    }

 

}

 


javaMailSender

publicclass MailSender implements Sender{

 

    @Override

    publicvoid send() {

        System.out.println("mail sender");

    }

 

}


 

javaSendFactory

publicclass SendFactory {

 

    public Sender produceSms() {

        returnnew SmsSender();

 

    }

 

    public Sender produceMail() {

        returnnew MailSender();

    }

 

}


javaMainTest

publicclass MainTest {

    publicstaticvoid main(String[] args) {

        SendFactoryfactory = new SendFactory();

        Sendersender = factory.produceMail();

       sender.send();

    }

}

 


 

 

3)    静态工厂方法模式

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

 

javaSender

publicinterface Sender {

    void send();

}


javaSmsSender

publicclass SmsSender implements Sender{

 

    @Override

    publicvoid send() {

        System.out.println("sms sender");

    }

 

}


 

javaMailSender

publicclass MailSender implements Sender{

 

    @Override

    publicvoid send() {

        System.out.println("mail sender");

    }

 

}


 

javaSendFactory

publicclass SendFactory {

 

    publicstatic Sender produceSms() {

        returnnew SmsSender();

    }

 

    publicstatic Sender produceMail() {

        returnnew MailSender();

    }

 

}


javaMainTest

publicclass MainTest {

    publicstaticvoid main(String[] args) {

        Sendersender = SendFactory.produceMail();

       sender.send();

    }

}


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值