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> ...
随机推荐
- 点击TextView浏览器打开指定网页
直接上代码: /** * 点击跳转到版权页面 */ private void getCopyRight() { // TODO Auto-generated method stub TextView ...
- HDU 1232(畅通工程)题解
以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定一具有N个节点的图和其边集,求其集合数量. [题目分析] 并查集经典题...其实就是创建好并查集就行了.. [算法流程] 于 ...
- Servlet 浅谈(一)
Servlet 的生命周期 类加载.实例化,init方法,service方法,destroy方法.关于这点,后面会有详细介绍. 什么是容器? 因为Servlet没有main方法,所以它受控于另一个Ja ...
- Hibernate学习之注解学习
转自:http://blog.sina.com.cn/s/blog_935ebb670101dnre.html 1.类级别注解 @Entity 映射实体类 @Table 映射数句库表 @En ...
- OSX: 10.9的SMB网络共享连接可能破坏其权限设置
参见以前的Blog,“OSX: 10.9 Mavericks的重要更新技术细节(1)”,自从10.9之后,它的内核默认地使用全新的SMB2协议,这本来是令人期待的变化,不过根据这多年来和OS X系统的 ...
- sed高级命令
所谓高级,主要是指这里将要提到的命令都能改变sed执行或者控制的流程顺序(sed通常都是一行被读入模式空间,并用脚本中的sed命令一个接一个的应用于那一行). 高级sed命令分成3个组: 1)处理多行 ...
- Oracle EBS-SQL (PO-2):检查当月到货补单的记录数.sql
SELECT DECODE(PLLA.FROM_LINE_ID,'-1','手工','','自动创建') 下达方式, rsh.receipt_num ...
- android NDK jni下的c文件 Unresolved inclusion
原因是在eclipse编辑环境中没有找到对应的include中的文件.解决方法是将包含该文件的include目录作为新的linked folder加入工程中.具体方法如下:1. 右击工程->Ne ...
- Linux下设置开机自启动Tomcat
方法一: linux 下tomcat开机自启动修改Tomcat/bin/startup.sh 为: export JAVA_HOME=/usr/java/j2sdk1..2_08 export CLA ...
- zoj2588 Burning Bridges(无向图的桥)
题目请戳这里 题目大意:给一张无向图,现在要去掉一些边,使图仍然连通,求不能去掉的边. 题目分析:就是求无向图的桥. tarjan算法跑一遍,和无向图割点十分类似,这里要找low[v] > df ...