• 设计模式---简单工厂模式


    1.简单工厂模式

      简单工厂模式分为三种:

    (1)普通

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

    /*发送邮件的例子*/
    //首先,创建二者的共同接口
    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 smsSender");
        }
    }
    //创建工厂类
    public class FactorySender{
        public Sender produce(String type){
            if("mail".equals(type)){
                return new MailSender();
            }else if("sms".equals(type)){
                return new SmsSender();
            }else{
                System.out.println("请输入正确类型");
                return null;
            }
        }
    }
    
    //简单工厂模式测试类
    public class FactoryTest{
        FactorySender factory=new FactorySender();
        Sender sender=factory.produce("sms");
        sender.send();
    }
    
    (2)多个方法

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

    /*发送邮件的例子*/
    //首先,创建二者的共同接口
    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 smsSender");
        }
    }
    //创建工厂类
    public class FactorySender{
        public Sender produceMail(){
            return new MailSender();
        }
        public Sender produceSms(){
            return new SmsSender();
        }
    }
    
    //简单工厂模式测试类
    public class FactoryTest{
        FactorySender factory=new FactorySender();
        Sender sender=factory.produceMail();
        sender.send();
    }
    
    (3)多个静态方法

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

    /*发送邮件的例子*/
    //首先,创建二者的共同接口
    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 smsSender");
        }
    }
    //创建工厂类
    public class FactorySender{
        public static Sender produceMail(){
            return new MailSender();
        }
        public static Sender produceSms(){
            return new SmsSender();
        }
    }
    
    //简单工厂模式测试类
    public class FactoryTest{
        Sender sender=FactorySender.produceMail();
        sender.send();
    }
    

      总体来说,工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。在以上三种模式中,第一种如果输入的字符串有误,不能正确创建对象,第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选择第三种--静态工厂方法模式。

  • 相关阅读:
    Debian/Ubuntu/Raspbian 时间同步
    linux 安裝mitmproxy
    Raspbian Lite Guide GUI 树莓派安装桌面
    SSH连接 提示 ssh_exchange_identification: Connection closed by remote host
    Navicat15 永久激活版教程
    docker企业级镜像仓库Harbor管理
    centos7.4安装docker
    Linux系统硬件时间12小时制和24小时制表示设置
    windows server 2012 R2系统安装部署SQLserver2016企业版(转)
    细说show slave status参数详解
  • 原文地址:https://www.cnblogs.com/yjxyy/p/11146138.html
Copyright © 2020-2023  润新知