设计模型之创建型模式之工厂方法模式(Factory Method)

来源:互联网 发布:软件设计规范怎么写 编辑:程序博客网 时间:2024/05/21 04:38

工厂方法模式分为三种:普通工厂模式,多个工厂方法模式,抽象工厂模式

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

//接口interface Sender {    public void Send();}// 实现类1class MailSender implements Sender {    @Override    public void Send() {        System.out.println("this is mailsender!");    }}// 实现类2class SmsSender implements Sender {    @Override    public void Send() {        System.out.println("this is sms sender!");    }}// 工厂类class SendFactory {    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 FactoryMethod {    public static void main(String[] args) {        SendFactory factory = new SendFactory();        Sender sender = factory.produce("sms");        sender.Send();    }}

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

// 工厂类class SendFactory {    public Sender produceMail() {        return new MailSender();    }    public Sender produceSms() {        return new SmsSender();    }}public class FactoryMethod {    public static void main(String[] args) {        SendFactory factory = new SendFactory();          Sender sender = factory.produceMail();          sender.Send();     }}

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

// 工厂类class SendFactory {    public static Sender produceMail() {        return new MailSender();    }    public static Sender produceSms() {        return new SmsSender();    }}public class FactoryMethod {    public static void main(String[] args) {        Sender sender = SendFactory.produceMail();        sender.Send();    }}

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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新生儿被呛到了怎么办 羊产后无奶怎么办 新生小猫不吃奶怎么办 婴儿吃母乳咳嗽怎么办 小孩呛到了咳嗽怎么办 婴儿喝水呛着怎么办 婴儿吃药呛到了怎么办 新生儿用奶瓶喝奶呛着怎么办 新生儿喝水呛到怎么办 宝宝吃奶呛到了怎么办 羔羊高烧不退怎么办 小孩晚上咳嗽厉害怎么办 婴儿经常呛咳怎么办 新生儿3小时喂奶怎么办 宝宝不会吸奶怎么办 4岁宝宝打呼噜怎么办 宝宝感冒拒奶怎么办 新生儿吸奶无力怎么办 吃奶小牛肚子胀怎么办 新生儿吃奶后打嗝怎么办 新生儿吃多漾奶怎么办 婴儿总是睡不熟怎么办 新生儿不不吃奶怎么办 学生沉迷网络游戏班主怎么办 手机用不了卡怎么办 手机变竖屏怎么办 游戏不支持分屏怎么办 服装设计做到没思路怎么办 眼睛变单眼皮了怎么办 换手机号银行卡绑定怎么办 麦当劳mdp改版了怎么办 摆摊做小吃下雨怎么办 cad2014画图很卡怎么办 头皮有毛囊虫怎么办 头发上的毛囊炎怎么办 狗笼子里面拉屎怎么办 地图鱼起白点怎么办 初中学不好高中怎么办 初中孩子英语不好怎么办 初中孩子数学不好怎么办 万能声卡声音小怎么办