java设计模式之 工厂模式Factory
好比某种套路,经过不断实践,证明对项目结构非常有利
如果需要获取某种对象,如同获取不同的产品
需要由工厂来提供,工厂模式
可能的类或者对象:工厂类 产品:Cat Dog Fish ...
//动物工厂 专门用于获取动物实例
class AnimalFactory{
public static Animal getAnimal(int msg){
Animal a1 = null;
if(msg == 1){
a1 = new Cat();
}else if(msg == 2){
a1 = new Dog();
}else if(msg == 3){
a1 = new Fish();
}else{
System.out.println("无效的消息!");
}
return a1;
}
}
如何使用:
实际应用中,代码只和工厂AnimalFactory、父类Animal有关,而与具体的子类无关。更加通用,降低了代码的耦合度。
main: Animal a1 = AnimalFactory.getAnimal(1);
Animal a2 = AnimalFactory.getAnimal(2);
原先代码:和具体子类Cat和Dog有关 耦合度高
Animal a1 = new Cat();
Animal a2 = new Dog();
(3)一视同仁
需求:让所有的动物吃"哈根达斯"
a1.eat("哈根达斯");
a2.eat("哈根达斯");
a3.eat("哈根达斯");
...
如果用数组将所有的动物管理起来?
Cat[] Dog[]
Fish[] ...
只要一个数组:
Animal[] 可以管理任何Animal以及子类对象
任何的子类 is-a
Animal
Animal[]
as = new Animal[5];
as[0] =
new Cat(101, "加菲猫", 3);
as[1] =
new Cat(102, "汤姆猫", 1);
as[2] =
new Dog(103, "史努比", 5);
as[3] =
new Fish(104, "沙丁鱼", 2);
as[4] =
new Mouse(105, "米老鼠", 3);
for(int
i=0; i<as.length; i++){
as[i].eat("哈根达斯");
}
满足:多态定理2 元素认为Animal类型 Animal[]
多态定理3
java设计模式之 工厂模式Factory的更多相关文章
- JAVA设计模式之工厂模式—Factory Pattern
1.工厂模式简介 工厂模式用于对象的创建,使得客户从具体的产品对象中被解耦. 2.工厂模式分类 这里以制造coffee的例子开始工厂模式设计之旅. 我们知道coffee只是一种泛举,在点购咖啡时需要指 ...
- Java设计模式之工厂模式(Factory模式)介绍(转载)
原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工 ...
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- 浅析JAVA设计模式之工厂模式(二)
1 工厂方法模式简单介绍 工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory),在这样的模式中,核心工厂不再是一个详细的类.而是一个抽象工厂,提 ...
- Java 设计模式之工厂模式(二)
原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...
- java设计模式2————工厂模式
1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展开放,对修改关闭 依赖倒转原则:面向 ...
- java 设计模式之工厂模式与反射的结合
工厂模式: /** * @author Rollen-Holt 设计模式之 工厂模式 */ interface fruit{ public abstract void eat(); } ...
- python 设计模式之工厂模式 Factory Pattern (简单工厂模式,工厂方法模式,抽象工厂模式)
十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了<Head First 设计模式>P109--P133 这25页 ...
- 设计模式之工厂模式(Factory)
设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...
随机推荐
- 8QQ消息框
1 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> < ...
- ora-00600笔记
一. ORA-600 概述 Errorsof the form ORA-600 are called internal errors. This section clarifies themisund ...
- HTML3层叠样式表
层叠样式表:CSS Cascading Style Sheet.V2.1 控制页面样式外观. 一.样式表分三类: 1.内联样式表.--放在元素的开始标记中.--只对当前元素起作用. <in ...
- C语言静态函数静态变量
C语言程序可以看成由一系列外部对象构成,这些外部对象可能是变量或函数.而内部对象是指定义在函数内部的函数参数及变量. 外部变量定义在函数之外,因此可以在许多函数中使用.由于C语言不允许在一个函数中定义 ...
- jsp中添加弹窗口并且实现向后台双向传递数据
思路:使用jquery-easyui框架实现弹出div,在jsp初始化时从后台获得数据初始化div中的form表单元素的value属性,从而获得后台数据.在点击确定按钮时使用ajax向后台发送数据. ...
- ajax在ie下返回未定义解决方案
有时候用ajax进行请求,接收到的数据在火狐下很正常,但在ie浏览器下确是undefined,这是因为后端php输入json时没有统一指定contentType头导致的,只需在php文件中加入head ...
- 在windows下,git webhook使用php拉取代码的学习总结
原来上传代码到测试服务器都是用ftp,我觉得这种方式很低效,而且容易出错,比如忘记传某个修改过文件. 现在项目的代码放在了git@osc上了,想使用他webhook,每当有push的时候,git@os ...
- svn检出maven工程到eclipse里面,部署到tomcat的步骤
1. 首先import project from svn 2.检出项目后,如果是多模块的maven项目,在子模块右击,import as project 3.右击项目,properties->d ...
- VS2005设置Release模式可调试
from:http://www.cppblog.com/fwxjj/archive/2009/09/25/97219.html
- 我使用过的Linux命令之date - 显示、修改系统日期时间
原文地址:http://www.cnblogs.com/diyunpeng/archive/2011/11/20/2256538.html 用途说明 ate命令可以用来显示和修改系统日期时间,注意不是 ...