美文网首页
设计模式学习笔记:02简单 工厂模式

设计模式学习笔记:02简单 工厂模式

作者: silencefun | 来源:发表于2017-10-30 09:45 被阅读9次

由一个工厂对象决定创建出哪一种产品类的实例,属于创建型模式。

定义发送接口

public interface Sender {
     public void Send(); 
}

以及实现的两个发送短信 和发送邮件

public class MailSender implements Sender {
@Override
    public void Send() {
        System.out.println("this is mail  sender!");
    }
}

发送短信

public class SmsSender implements Sender {
@Override
    public void Send() {
        System.out.println("this is sms sender!");
    }
}

建造工厂, 一般写法:

public class NormalFactory {
    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 FactoryTest {
public static void main(String[] args) {
    normalFactory();
//  multiFactory();
//  staticFactory();
    }

// 一般写法
private static void normalFactory() {
    NormalFactory factory = new NormalFactory();
    Sender sender = factory.produce("sms");
    sender.Send();
    }

// 多个工厂方法模式
private static void multiFactory() {
    MultiFactory factory = new MultiFactory();
    Sender sender = factory.produceMail();
    sender.Send();
    }

// 静态 工厂
private static void staticFactory() {
    Sender sender = StaticFactory.produceMail();
    sender.Send();
    }
}

当然,产品多了这样写没效率,使用 多个工厂方法模式

public class MultiFactory {
public Sender produceMail() {
    return new MailSender();
    }

public Sender produceSms() {
    return new SmsSender();
    }
}

或者 使用 静态方式

 public class StaticFactory {
        public static Sender produceMail() {
            return new MailSender();
            }

            public static Sender produceSms() {
            return new SmsSender();
        }
}

调用方法在测试类,使用场景的理解:
比如不同模块对网络请求,可以把 使用静态方式创造不同模块的 网络请求实现 。工厂类始终返回的是这个抽象类,这样如果对原有功能进行更改或是新添加新的功能,也不会对原来的其他类做修改。

相关文章

  • 设计模式整理(5) 工厂模式

    学习《Android 源码设计模式解析与实践》系列笔记 介绍 工厂模式属于创建型设计模式之一,是一种结构简单的设计...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • 设计模式(四):《Head First设计模式》工厂模式之简单工

    前言 本文是对工厂模式中的简单工厂的学习笔记,如有错误请指正~ 简单工厂不是设计模式,更像是一种编程习惯,是学习工...

  • 设计模式学习笔记:02简单 工厂模式

    由一个工厂对象决定创建出哪一种产品类的实例,属于创建型模式。 定义发送接口 以及实现的两个发送短信 和发送邮件 发...

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • 设计模式一、单例模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 简单单例(推荐...

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 设计模式-抽象工厂模式

    前面我们学习了了简单工厂模式和工厂方法模式,今天我们来学习设计模式中最后的一种工厂模式——抽象工厂模式(Abstr...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 设计模式

    设计模式(视频总结) [TOC] 一、简单工厂模式(Simple Factory) 简单工厂模式: 简单工厂模式属...

网友评论

      本文标题:设计模式学习笔记:02简单 工厂模式

      本文链接:https://www.haomeiwen.com/subject/zwfppxtx.html