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

1.创建共同的接口

    public interface Sender {  public void Send(); } 

2.创建该接口的实现类

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

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

3.建立工厂类

    public 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; } } } 

4.测试

    public class FactoryTest {  public static void main(String[] args) { SendFactory factory = new SendFactory(); Sender sender = factory.produce("sms"); sender.Send(); } } 

输出:this is mailsender!

转载于:https://www.cnblogs.com/fenghx/p/9497688.html

每天一个设计模式,工厂方法模式(Factory Method)相关推荐

  1. 【设计模式】工厂方法模式 Factory Method Pattern

    在简单工厂模式中产品的创建统一在工厂类的静态工厂方法中创建,体现了面形对象的封装性,客户程序不需要知道产品产生的细节,也体现了面向对象的单一职责原则(SRP),这样在产品很少的情况下使用起来还是很方便 ...

  2. 工厂方法模式(Factory Method)简介

    工厂方法模式 名字 跟已经介绍的 简单工厂模式很类似. 实际上它们的模型也是十分相似的. 我们先看看工厂模式的定义. 一. 工厂方法(Factory Method)模式定义 教材上是这样写的: 工厂方 ...

  3. 设计模式之六:工厂方法模式(Factory method Pattern)

    工厂方法(Factory Method)模式就是定义一个创建对象的工厂接口,将实际创建工作推迟到子类当中. 核心工厂类不再负责具体产品的创建,仅提供了具体工厂子类必须实现的接口,这样核心类成为一个抽象 ...

  4. 设计模式之工厂方法模式(Factory Method)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...

  5. 设计模式之工厂方法模式---factory method

    模式的介绍 模式的定义 Define an interface for creating an object,but let subclassed decide which class to inst ...

  6. 设计模式之工厂方法模式(Factory Method Pattern)

    一.工厂方法模式的诞生 在读这篇文章之前,我先推荐大家读<设计模式之简单工厂模式(Simple Factory Pattern)>这篇文档.工厂方法模式是针对简单工厂模式中违反开闭原则的不 ...

  7. 软件工程 - 设计模式学习之工厂方法模式Factory Method

    在现实生活中我们可以看见,乐事在卖薯片,可比克也在卖. 我敢肯定的说它们各自都有自己的工厂来生产薯片,而且生产出来的薯片味道还是不一样的. 这就是我们这里所谓的工厂方法模式. 我们来看看这个模式的UM ...

  8. 设计模式题目-工厂方法模式(Factory Method)

    设计一个程序来读取多种不同存储格式的图片,针对每一种图片格式都设计一个图片读取器(ImageReader),如GIF格式图片读取器(GifReader)用于读取GIF格式的图片,JPEG格式图片读取器 ...

  9. 设计模式-工厂方法(Factory Method)

    2018-1-20 by Atlas 设计思想 核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被 ...

  10. C++实现工厂方法模式Factory Method Pattern

    设计原则6:要依赖抽象,不要依赖具体类.(又称依赖倒置原则Dependency Inversion Principle) 不能让高层组件依赖低层组件,而且,不管高层组件或低层组件,两者都应该依赖于抽象 ...

最新文章

  1. ubuntu下连接mysql出现Access denied for user ‘rose‘@‘localhost‘ (using password: NO)的解决方法
  2. Mybatis核心配置文件SqlMapConfig.xml独立使用配置内容
  3. 深入到系统组件是否白盒测试_白盒测试
  4. IntelliJ IDEA 2020修改菜单显示大小
  5. 账户配置 三: Gmail
  6. MySQL中AES_ENCRYPT('密码','钥匙')函数 可以对字段值做加密处理
  7. 微信小程序|开发实战篇之十-一些细节处理
  8. TypeScript学习(一):原始数据类型的定义
  9. apulSoft apUnmask for mac(音频放大组件)
  10. Tensorflow训练mnist数据集源代码解析
  11. redis实战之事务与持久化
  12. python-Pandas库
  13. Qt Creator使用Valgrind代码分析工具
  14. 常用C++库及测试程序
  15. 使用ffmpeg将m3u8文件转为mp4
  16. Android源码-高质量开发库
  17. 详解c语言main函数、printf函数、scanf函数与va家族
  18. python 拼音库_python有没有拼音库python进阶之socket详解
  19. 在微型计算机中 负数常用()表示,在微型计算机中,负数常用( )表示。
  20. 将小米SoundMove 无缝接入 ChatGPT

热门文章

  1. Linux 技术篇-文件大小查看方法实例演示,查看指定文件大小,查看列表下所有文件夹和文件的大小
  2. C++ leetCode 1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个
  3. first-child伪类选择器没有效果(不起作用)
  4. [YTU]_2444(C++习题 对象转换)
  5. 双链表的建立、求长、定位、插入、删除、输出和释放
  6. 封装,多态,类的约束,super()深入了解
  7. JavaScript this指向相关内容
  8. css3+jQuery制作导航菜单(带动画效果)
  9. 【转载】表单中 Readonly 和 Disabled 的区别
  10. codevs1251 括号