为创建对象定义一个接口,让子类决定实例化哪个类。工厂方法让一个类的实例化延迟至子类。

public interface Factory{
Product createproduct();
}//Factory接口定义了createproduct()方法来返回Product类型的实例对象,
//ConcreateFactory实现了该方法,每次调用都会实例化一个新的ConcreateProduct返回
public class ConcreateFactory implements Factory{public Product createProduct(){return new ConcreateProduct();}}
public interface Product{}
public class ConcreateProduct implements Product{}//工厂方法模式使用
public class Client{
private Factory factory;
public Client (Factory factory){this.factory=factory;
}
public void doSomething(){Product product =factory.createproduct();//to do something...
}
public static void main(String[] args)
{Client client=new Client(new ConcreateFactory());client.doSomething();
}}
//如果具体实现类较多,我们可以定义一个参数化的工厂方法,根据不同
//的输入返回不同的实现子类,代码片段如下.
public Product createProduct(String type){
if("type1".equals(type)){return a type1 instance...
}else if("type2".equals(type)){return a type2 instance...
}else{...
}
}

工厂方法(FactoryMethod)模式相关推荐

  1. 『创建型』简单工厂SimpleFactory、工厂方法FactoryMethod、抽象工厂AbstractFactory

    为什么80%的码农都做不了架构师?>>>    几点说明 永远不要纠结于在什么时候使用什么模式 永远不要纠结于什么模式适用于什么情景 永远不要去死记任何的模式 并不是说,23种设计模 ...

  2. 【设计模式】——工厂方法FactoryMethod

    前言:[模式总览]----------by xingoo 模式意图 工厂方法在MVC中应用的很广泛. 工厂方法意在分离产品与创建的两个层次,使用户在一个工厂池中可以选择自己想要使用的产品,而忽略其创建 ...

  3. 当Android遇上设计模式之工厂方法(Factory)模式

    文章目录 1. 简单工厂模式 2.1 定义 2.2 代码实现 2.3 使用场景 2. 工厂方法模式 2.1 定义 2.2 代码实现 2.3 使用场景 设计模式六大原则: 单一职责原则:就一个类仅有一个 ...

  4. java 工厂方法_java设计模式-工厂方法模式

    1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的"创建与使用相分离" ...

  5. python的编程模式-实例讲解Python设计模式编程之工厂方法模式的使用

    工厂方法模式是简单工厂模式的进一步抽象和推广,它不仅保持了简单工厂模式能够向客户隐藏类的实例化过程这一优点,而且还通过多态性克服了工厂类过于复杂且不易于扩展的缺点.在工厂方法模式中,处于核心地位的工厂 ...

  6. 设计模式学习-工厂方法模式

    在上文(设计模式学习-简单工厂模式)的模拟场景中,我们用简单工厂模式实现了VISA和MASTERARD卡的刷卡处理,系统成功上线并运行良好,突然有一天老大跑来说,我们的系统需要升级,提供对一般银联卡的 ...

  7. Java 的工厂方法及代理模式

    Java 的工厂方法及代理模式 工厂方法(FactoryMethod) 概述:定义一个用于创建对象的接口,让子类决定实例化哪一个类.FactoryMethod使一个类的实例化延迟到其子类. 适用性: ...

  8. 【设计模式-手写源码-2】-工厂方法模式-基于魔兽争霸冰封王座

    1:主题拆解 ① 对比简单工厂,建立工厂方法(FactoryMethod) ②工厂方法的优缺点和应用 ③对修改关闭对扩展开放 ④面向切面编程 2:基本介绍 定义一个用于创建对象的接口,让子类决定实例化 ...

  9. 简单工厂模式(Java、Python)、工厂方法模式(Java、Python)

    目录 一.试画出简单工厂模式的模式结构图,并对模式进行分析 1.1 简单工厂模式结构图: 1.2 简单工厂模式的实现(Java) 1.3 简单工厂模式的优缺点 1.4 简单工厂模式实现(Python) ...

最新文章

  1. Linux 爱好者该向闭源软件敞开怀抱了
  2. c++编写web服务_让我们编写一个文档样式的Web服务
  3. element 组件中 el-form-item label= ‘vue介绍 (vue设置)‘ 强制换行
  4. 读取PDF的文字--zt
  5. 在VMware上安装CentOS-6.5 minimal - 安装VMware Tools
  6. java 单例模式_谈谈Java中的单例模式
  7. php168 discuz论坛贴子调用设置,Z-blog调用Discuz论坛最新帖子的方法
  8. Chromeedge好用扩展插件分享
  9. python获取淘宝服务器时间_分享淘宝时间服务器同步时间接口api和苏宁时间服务器接口api...
  10. win7本地登录计算机,win7系统绑定微软账户到本地电脑上的具体办法
  11. [爬虫]爬取猫眼电影票房信息(信息字体加密)
  12. 多目标优化算法:多目标非洲秃鹫优化算法MOAVOA(提供Matlab代码)
  13. 微信被动添加好友限制,如何无上限好友被动添加???
  14. 第二次练车,练了一天倒库
  15. 前端面试题整理 (ES6篇)
  16. 单片机炫彩灯实训报告_51单片机呼吸灯实验报告.doc
  17. 浅谈Api框架神器Swagger2
  18. ”Could not find tag for codec none in stream #0, codec not currently supported in container”的解决方法
  19. opencv报错—error C2872: ACCESS_MASK: 不明确的符号
  20. 南理工计算机考研难度,南京理工大学网络空间安全考研难吗

热门文章

  1. linux新建自定义命令,Linux 创建自定义命令
  2. prim算法适用条件_内部排序算法的比较及应用
  3. 20210308 20210309 :链表类题目合集
  4. MySQL redis如何实现_如何保障mysql和redis之间的数据一致性?(转发)
  5. bootstrap confirm 确认后在执行_如何利用 Laravel 提供的密码确认功能来保护用户信息安全...
  6. clickhouse-小结 mutation操作 视图
  7. 单片机项目开发一般步骤
  8. VB判断指定名字的进程是否存在函数
  9. vb中空操作(等待)的指令、延时方法
  10. 从零学ELK系列(一):为什么要跟我学从零学ELK系列