zoukankan      html  css  js  c++  java
  • java设计模式之工厂模式学习

    上周安排的写两篇设计模式的文章,结果一篇也没写,今天都给写了。回顾+反思。In this world he who stops ,won't get anything he wants!

    工厂方法模式分为三种:

    1.普通工厂模式  就是建立一个工厂类,对实现接口的一些类进行实例的创建

    ① 先建立一个“发送方法”的接口

    package com.qiao.factory;
    
    public interface Sender {
        public void send();
    }

     ② 建一个邮件发送类

    package com.qiao.factory;
    
    public class MailSendFactory implements Sender {
    
        public void send() {
            System.out.println("send mail ");
        }
    }

    ③ 建一个短信发送类

    package com.qiao.factory;
    
    public class SMSSendFactory implements Sender {
    
        public void send() {
            System.out.println("send sms ");
        }
    
    }

    ④ 工厂类

    package com.qiao.factory;
    
    public class SendFactory {
        
        public Sender produce(String type){
            if("sms".equals(type)){
                return new SMSSendFactory();
            }else if("mail".equals(type)){
                return new MailSendFactory();
            }else {
                throw new RuntimeException("请输入正确的类型");
            }
        }
        
    }

    ⑤ 测试

        @Test
        public void test1(){
            String type = "ssms";
            Sender send = new SendFactory().produce(type);
            send.send();
        }    

    输出  : send sms

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

    ① 工厂类改为

    package com.qiao.factory;
    
    public class SendFactory2 {
        
        public Sender mailSenderProduce(){
            return new MailSendFactory();
        }
        public Sender SmsSendProduce(){
            return new SMSSendFactory();
        }
    }

    ② 测试

       @Test
        public void test2(){
            Sender send = new SendFactory2().mailSenderProduce();
            send.send();
        }

    输出 :  send mail 

    3.静态工厂方法 就是将上面的方法改为静态方法,这样就不用new了

    ① 将工厂类改为

    package com.qiao.factory;
    
    public class SendFactory3 {
        
        public static Sender mailSenderProduce(){
            return new MailSendFactory();
        }
        public static Sender SmsSendProduce(){
            return  new SMSSendFactory();
        }
    }

    ②测试

        @Test
        public void test3(){
            Sender send = SendFactory3.mailSenderProduce();
            send.send();
        }

    输出 : 

    send mail

    以上例子都是抄别人的,写出来好让自己能更好的了解一下。

    原文 http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html

  • 相关阅读:
    weblogic详解
    Java中常见的5种WEB服务器介绍
    Eclipse 插件ibeetl
    Eclipse安装svn插件的几种方式
    在 Laravel 应用中使用 pjax 进行页面加速
    Pjax无刷新跳转页面实现,支持超链接与表单提交
    emlog通过pjax实现无刷新加载网页--完美解决cnzz统计和javascript失效问题
    PJAX全局无刷新的设置方法~
    pjax使用小结
    jQuery+pjax简单示例汇总
  • 原文地址:https://www.cnblogs.com/Iqiaoxun/p/5565187.html
Copyright © 2011-2022 走看看