java23中设计模式之工厂模式

参考

工厂模式分为三种:
1、简单工厂模式,就是创建一个工厂类,对实现了同一接口的一些类进行实例的创建。
2、多个工厂模式,就是在普通工厂方法中,若传递的字符串出错,则不能创建对象,而多个工厂模式就是提供多个工厂方法分别创建对象。
3、静态工厂模式,将多个工厂模式里的方法设置为静态的,不需要创建实例直接调用即可。
概述:
凡是出现大量的产品需要创建并且具有共同的接口时,可由工厂方法创建。

代码描述:(以发送邮件和发送短信为类)

实现接口:

package com.design.model.factorymodel;

public interface Send
{
    public void send();
}

邮件发送类:

package com.design.model.factorymodel;

public class MailSend implements Send
{

    @Override
    public void send()
    {
        System.out.println("MailSender");
    }

}

短信发送类:

package com.design.model.factorymodel;

public class SmsSend implements Send
{

    @Override
    public void send()
    {
        System.out.println("sms send");
    }

}

工厂类创建:

package com.design.model.factorymodel;

public class SendFactory
{
    //单个工厂模式
    public Send producer(String type){
        if(type.equals("mail")){
            return new MailSend();  //创建实例
        }else if (type.equals("sms")) {
            return new SmsSend();   //创建实例
        }else {
            return null;    //字符串不同时,不能创建对象
        }
    }

    //多个工厂模式
    public Send produceMail(){
        return new MailSend();
    }

    public Send produceSms(){
        return new SmsSend();
    }

    //静态工厂模式
    public static Send sproduceMail(){
        return new MailSend();
    }

    public static Send sproduceSms(){
        return new SmsSend();
    }
}

测试样例:

package com.design.model.factorymodel;

public class FactoryTest
{

    public static void main(String[] args)
    {
        //简单工厂测试
        SendFactory sendFactory = new SendFactory();
        Send send = sendFactory.producer("mail");
        send.send();

        //多个工厂测试
        SendFactory sendFactorymore = new SendFactory();
        sendFactorymore.produceMail().send();

        //静态工厂测试
        SendFactory.sproduceMail().send();
    }

}

运行结果:

MailSender
MailSender
MailSender

后续说明:待补~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值