"工厂模式"-之Java,Android面试必问设计模式(1/9)

来源:互联网 发布:什么叫数据库营销 编辑:程序博客网 时间:2024/06/07 10:11

1.工厂方法模式:分三种


这是我给大家介绍的8个面试必问的设计模式的第一类:工厂模式.学完这8类必会的那么面试就不会有什么问题了,其余的无非都是多态的演变.好的开始讲解第一类:


  • 1.普通工厂

        建立一个工厂类,对"实现同一接口"的一些类进行实例的创建.
  • 2.多个工厂

        在普通的基础上,如果传递的字符串出错,就不能创建,并提供多个工厂方法,分别创建对象.
  • 3.静态工厂方法

        将多个工厂的方法改成"静态",不用创建实例,直接调用即可

1.普通工厂:

    /**     * 普通工厂类:     * 1.一个接口     * 2.多个具体实现了接口的"类"     * 3.创建一个发送信息"工厂类"     *      包含一个统一的方法:对实现了"同一接口的类",进行实例的创建.     */    //发送接口    interface Send {        public void send();    }    //发送短信类,实现发送类    class SendMessage implements Send {        @Override        public void send() {            System.out.println("发送了 短信...");        }    }    //发送邮件类,实现发送类    class SendEmail implements Send {        @Override        public void send() {            System.out.println("发送了 邮件...");        }    }    //发送工厂类    class SendFactory {        public Send method(String type) {            //根据传值的不同进行判断,得到不同的对象.            if ("message".equals(type)) {                return new SendMessage();            }            else if ("email".equals(type)) {                return new SendEmail();            } else {                System.out.println("输入类型不正确");                return null;            }        }    }       //测试类:    public class Test {        public static void main(String[] args) {            SendFactory sf = new SendFactory();            final Send email = sf.method("email");            email.send();            final Send message = sf.method("message");            message.send();            final Send phone = sf.method("phone");            if (phone != null) {                phone.send();            }        }    }

打印结果:

发送了 邮件...发送了 短信...输入类型不正确

2.多个工厂模式:

    /**     * 多个工厂类:     * 1.(Ps)在普通的基础上加上升级:每个实例"都创建"对应的方法     * 2.后续直接调用对应方法即可,防止了输入字符串出错     */    public class SendFactory {        //指指定的多个方法,防止出错        public Send sendEmailmethod() {            return new SendEmail();        }        public Send sendMessageMethos() {            return new SendMessage();        }    }//测试类:  public class Test {    public static void main(String[] args) {        SendFactory sf = new SendFactory();        //因为有选择了,所以不会出错        final Send email = sf.sendEmailmethod();        email.send();        final Send message = sf.sendMessageMethos();        message.send();    }}

打印结果:

发送了 邮件...发送了 短信...

3.静态工厂模式:

    /**     * 就改成个静态即可.     * (Ps+)在多个工厂的基础上,把工厂的中的方法改成静态,那么等下就不用new 工厂类了     */    //发送工厂类    public class SendFactory {        //指指定的多个方法,防止出错        //只需把这里改成static 方法即可        public static Send sendEmailmethod() {            return new SendEmail();        }        public static Send sendMessageMethos() {            return new SendMessage();        }    }//测试类:public class Test {    public static void main(String[] args) {        //因为是静态方法,所以直接调用即可,不用new 工厂类        Send email = SendFactory.sendEmailmethod();        email.send();        final Send message = SendFactory.sendMessageMethos();        email.send();    }}

打印结果:

发送了 邮件...发送了 短信...

0 0