设计模式-创建型-简单工厂模式(Static Factory)
来源:互联网 发布:楚天数控编程代码 编辑:程序博客网 时间:2024/05/19 09:36
简单工厂模式又叫静态工厂模式(Static Factory )(不属于23种GOF设计模式)
工厂角色:工厂角色负责产品的生产工作。在简单工厂模式中,工厂类是一个具体的实现类,在系统设计中工厂类负责实际对象的创建工作
工厂类(Factory)的特点是:它知道系统中都存在哪些能够创建对象的具体类(ConcreteProduct),也知道该如何将创建的对象,以某种能够屏蔽具体类实现细节的方式(AbstractProduct)提供给所需要的其他角色来使用该对象提供的数据和服务
抽象产品角色:抽象产品角色是具体的产品的抽象。抽象就是将产品的共性抽取出来,可以直接暴露给客户端(需要使用具体产品的角色),对所有的客户端来说,从工厂中直接获取到的原始产品的外部形态都是相同的,没有任何的差别,包括数据和服务。这也就是说,具体客户端应该“秘密”掌握着某一个或一些具体产品的详细资料(具体产品类型、数据和服务),然后根据具体客户端(任何一个需要使用某种具体产品的数据和服务的实现类)需要什么样的附加数据和服务,进行类类型转换后,通过借助于对应的具体产品对象来完成其职责
抽象产品角色,在实际系统中可以定义为接口或者抽象类
具体产品角色:具体产品实现类一定是抽象产品类的实现或扩展。为了保证工厂类能够创建对象,工厂类需要知道具体产品的创建方式,这就涉及到具体产品类所提供的构造方法,以便,可能工厂类会向客户端提供具体创建服务所需要的数据。例如:某个产品类需要通过一个账号才能构造其实例,所以工厂类必须根据它的创建需求,为客户端提供一个带账号参数的生产方法,才能创建该具体产品类的对象
类图
package com.vapy.creator.StaticFactory;/** * * @author vapy * * 运动员 * */public interface Athlete { public void run(); public void jump(); }
package com.vapy.creator.StaticFactory;/** * * @author vapy * * 足球运动员 * */public class FootballPlayer implements Athlete { @Override public void run() { System.out.println("Football player run!"); } @Override public void jump() { System.out.println("Football player jump!"); }}
package com.vapy.creator.StaticFactory;/** * * @author vapy * * 运动员协会 * */public class AthleticAssociation { public static Athlete registeredFootballPlayer() { return new FootballPlayer(); }}
package com.vapy.creator.StaticFactory;/** * * @author vapy * */public class Client { private static Athlete goalkeeper; private static Athlete guard; public static void main(String[] args) { guard = AthleticAssociation.registeredFootballPlayer(); goalkeeper = AthleticAssociation.registeredFootballPlayer(); goalkeeper.run(); guard.jump(); }}
本文代码可在github查看:点击此处
- 设计模式-创建型-简单工厂模式(Static Factory)
- 设计模式(2)-创建型-简单工厂,工厂,抽象工厂模式(Factory)
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- 设计模式之Static Factory模式(简单工厂模式)
- python设计模式(1)-Simple Factory(Static Factory)(简单工厂)
- 设计模式 - 简单工厂模式/静态工厂模式(Static Factory Method) C++实现
- 设计模式:创建型模式:工厂模式(factory pattern)
- 设计模式学习笔记--简单工厂模式(Simple Factory Pattern)【创建型模式】
- 设计模式系列(四)简单工厂模式(Simple Factory Pattern/Static Factory Method)
- 设计模式-简单工厂模式/静态工厂方法(Static Factory Method)
- 设计模式(一)工厂模式Factory(创建型)
- 设计模式(一)工厂模式Factory(创建型)
- 设计模式(一)工厂模式Factory(创建型)
- 设计模式(一)工厂模式Factory(创建型)
- 设计模式(一)工厂模式Factory(创建型)
- 设计模式(一)工厂模式Factory(创建型)
- iOS开发 UITextFild/TextView限制字数(含联想词汇)
- HDU 1107 武林(大模拟)
- USACO3.2.6 香甜的黄油 (SPFA)
- 集合容器set
- 发布软件新版本注意事项
- 设计模式-创建型-简单工厂模式(Static Factory)
- 8086汇编语言 D命令查看指定地址的内容
- 小马哥----高仿苹果6sp(主板型号W9200_WZS_2QG 6582 7月版本刷机拆机主板图与开机识别图
- Unity3d 5 官方教程:UI
- shell 常用命令行
- Spring的JdbcTemplate
- 01-分数规划专题
- 理清浏览器Window对象&window对象&this对象
- java-基础-数组探究