设计模式之工厂模式

来源:互联网 发布:windows密码破解工具 编辑:程序博客网 时间:2024/06/08 03:16
工厂方法模式分为三种:
   工厂方法模式:
        1,普通工厂模式,就是建立了一个工厂类,对实现了同一接口的一些类进行实例的创建。
        举例:
                接口:                public interface Sender{                        public void Send();                }                实现类:                public class MailSender implments Sender{                        @Override                        public void Send(){                                System.out.println("this is mailSender!");                        }                }                public class SmsSender implments Sender{                        @Override                        public void Send(){                                System.out.println("this is SmsSender!");                        }                }                工厂类:                public class SendFactory{                        public Sender produce(String str){                                if("mail".equals(str)){                                        return new MailSender();                                }                                else if("sms".equals(str)){                                        return new SmsSender();                                }                                else{                                        return null;                                }                        }                }
        2,多工厂模式:多工厂模式就是对普通工厂模式的改进,在普通工厂模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多>个工厂方法,分别创建对象。
        将普通工厂模式的SendFactory类进行修改一下就可以了。
        public class SendFactory{                public Sender Mailproduce(){                        return new MailSender();                }                pubblic Sender Smsproduce(){                        return new SmsSender();                }        }
        3,静态工厂模式:讲上面的多工厂模式里的方法置位静态的,不需要创建实例,直接调用就可以。
        修改多工厂方法中的SendFactory类:
        public class SendFactory{                public static Sender Mailproduce(){                        return new MailSender();                }                public static sender Smsproduce(){                        return new SmsSender();                }        }
        总体来说,工厂方法模式适合:出现大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。缺点就是如果想拓展类,必须对工厂>类进行修改,违反了闭包的原则。


    抽象工厂模式:
        为了改进工厂方法模式中违反的闭包的原则,出现了抽象类。

        public interface Sender{                public void Send();        }        public class MailSender implents Sender{                @Override                public void Send(){                        System.out.println("this is MailSender!");                }        }        public class SmsSender implents Sender{                @Override                public void Send(){                        System.out.println("this is SmsSender!");                }        }        public interface Prive{                public Sender Produce();        }        public class MailProduce{                @Override                public Sender Produce(){                        return new MailSender();                }        }        public class SmsProduce{                @Override                public Sender Produce(){                        return new SmsSender();                }        }



0 0