Java 23种设计模式之简单工厂模式

来源:互联网 发布:2014年流行的网络歌曲 编辑:程序博客网 时间:2024/06/05 01:00

1. 概念

    就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质    是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个    父类或接口)的实例。

2. 创建父类接口

    public interface ISender {        void send(); //发送方法    }   

3. 创建产品类实现父类接口

    1.产品一     public class QQSender implements ISender{        @Override        public void send() {            System.out.println("QQSender send");        }    }       2.产品二    public class SmsSender implements ISender{        @Override        public void send() {            System.out.println("SmsSender send");        }    }    3.产品三    public class EmailSender implements ISender{        @Override        public void send() {            System.out.println("EmailSender send");        }    }

4. 创建工厂类,用工厂类创建产品对象

    1.实现方式一  普通工厂    public class CommonFactory1{         public ISender produce(String type){            ISender sender;            switch (type){                case "sms":                    sender = new SmsSender();                    break;                case "qq":                    sender = new QQSender();                    break;                case "email":                    sender = new EmailSender();                break;                default:                    sender = null;                    System.out.println("produce 类型匹配");                    break;                }                return sender;            }    }    2.实现方式二 多个工厂    public class MultiFactory{        public ISender produceSms(){            return new SmsSender();        }        public ISender produceEmail(){            return new EmailSender();        }        public ISender produceQQ(){            return new QQSender();        }    }    2.实现方式二 静态工厂    public class StaticFactory{        public static ISender produceSms(){            return new SmsSender();        }        public static ISender produceEmail(){            return new EmailSender();        }        public static ISender produceQQ(){            return new QQSender();        }    }

5. 测试类

    public class FactoryTest {        @Test        public void test1(){            SenderFactory factory = new SenderFactory();            ISender sender = factory.produce("qq");            if(sender!=null){                sender.send();            }        }        @Test        public void test2(){            MultiFactory factory = new MultiFactory();            ISender sender = factory.produceSms();             sender.send();        }        @Test        public void test3(){            StaticFactory. produceEmail().send();        }    }

6.小结

    优:    工厂类是整个模式的关键.包含了必要的逻辑判断,根据外界给定的信息,    决定究竟应该创建哪个具体类的对象.    缺:    违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;    它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。
原创粉丝点击