设计模式之1--简单工厂模式
来源:互联网 发布:软件企业评估管理办法 编辑:程序博客网 时间:2024/06/06 14:15
简单工厂模式学习笔记
首先将需要创建的各种不同对象的相关代码封装到不同的类中,这些类成为具体产品类,而将它们公共的代码进行抽象和提取后封装在一个抽象产品类中,每一个具体产品类都是抽象产品类的子类;然后提供一个工厂类用户创建各种产品,在工厂类中提供一个创建产品的工厂方法,该方法可以根据所传入的参数不同创建不同的具体产品对象;客户端只需调用工厂类的工厂方法并传入相应的参数即可得到一个产品对象。
简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又被称为静态工厂方法模式,属于类创建型模式。
简单工厂模式主要是分为工厂类,抽象产品类和具体产品类。
抽象产品类:
abstract class Product { public void methodSame(){ /*公共方法的实现*/ } //声明抽象业务方法 public abstract void methodDiff();}
具体产品A:
class ConcreteProductA extends Product { public void methodDiff() { //业务方法的实现 }}
具体产品B:
class ConcreteProductB extends Product { public void methodDiff() { //业务方法的实现 }}
工厂类:
class Factory { public static Product getProduct(String arg) { Product product = null; if(arg.equals("A")) { product = new ConcreteProductA(); } else if(arg.equals("B")) { product = new ConcreateProductB(); } return product; }}
客户端调用:
class Client { public static void main(String args[]) { Product product; product = Factory.getProduct("A"); product.methodSame(); product.methodDiff(); }}
把产品共同的行为给抽象出来,然后具体产品类继承抽象产品类,而该模式核心的方法是工厂类,它还有一个静态getProduct()方法,客户端直接调用该静态方法,传入需要的产品类型就可以返回Product类型的对象。
简单工厂模式总结:
简单工厂模式提供了专门的工厂类用于创建对象,将对象的创建和使用分离开。
优点
(1) 工厂类包含必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以直接消费产品。实现了对象创建和使用的分离。
(2) 客户端无需知道具体产品类的类名,只需要知道具体产品类所对应的参数即可。缺点
由于所有的产品创建都是在工厂类进行的,一旦工厂类不能正常工作,整个系统都会受到影响。简单工厂模式由于使用了静态工厂方法,造成工厂角色无法行程基于继承的等级结构。
适用场景: 工厂类负责创建的对象比较少,客户只知道传入工程类的参数,对于如何创建对象不关心。
- 设计模式之1---简单工厂模式
- 设计模式(1)之简单工厂模式
- 设计模式之1--简单工厂模式
- 设计模式 之简单工厂+ 工厂模式
- 设计模式之简单工厂设计模式
- 设计模式之简单工厂模式,工厂模式,策略模式
- 设计模式解读之 简单工厂模式&工厂方法模式&抽象工厂模式(1)
- 设计模式 之 简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂
- 设计模式之简单工厂.
- 设计模式之简单工厂
- Android内核开发:系统编译输出的镜像文件
- LeetCode算法题目:Binary Tree Maximum Path Sum
- VS 2013插件
- 【PHP基础】php上传文件类
- Java事务+atomikos[jta]
- 设计模式之1--简单工厂模式
- JS时间对象创建及比较大小
- 使用jQuery操作DOM
- 算法导论 第二十六章 最大流
- 从master分支clone下的代码,上传到另一个新建分支
- app时如何写一个全局的ajax,,然后在每个页面都是用
- hdu 5972 Regular Number bitset优化字符串匹配
- flume 传输错误
- 基于SCORM标准课件的移动客户端架构设计