好比某种套路,经过不断实践,证明对项目结构非常有利

如果需要获取某种对象,如同获取不同的产品

需要由工厂来提供,工厂模式

可能的类或者对象:工厂类  产品: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的更多相关文章

  1. JAVA设计模式之工厂模式—Factory Pattern

    1.工厂模式简介 工厂模式用于对象的创建,使得客户从具体的产品对象中被解耦. 2.工厂模式分类 这里以制造coffee的例子开始工厂模式设计之旅. 我们知道coffee只是一种泛举,在点购咖啡时需要指 ...

  2. Java设计模式之工厂模式(Factory模式)介绍(转载)

    原文见:http://www.jb51.net/article/62068.htm 这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式.工厂方法.抽象工 ...

  3. 浅析JAVA设计模式之工厂模式(一)

    1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...

  4. 浅析JAVA设计模式之工厂模式(二)

    1 工厂方法模式简单介绍 工厂方法 (Factroy Method)模式:又称多态性工厂模式(Polymorphic Factory),在这样的模式中,核心工厂不再是一个详细的类.而是一个抽象工厂,提 ...

  5. Java 设计模式之工厂模式(二)

    原文地址:Java 设计模式之工厂模式(二) 博客地址:http://www.extlight.com 一.背景 本篇内容是 Java 设计模式创建型模式的第二篇.上一篇主题为 <Java 设计 ...

  6. java设计模式2————工厂模式

    1.工厂模式介绍: 1.1.实现了创建者与调用者的分离 1.2.详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 1.3.所遵循的OOP原则: 开闭原则:对扩展开放,对修改关闭 依赖倒转原则:面向 ...

  7. java 设计模式之工厂模式与反射的结合

    工厂模式: /**  * @author Rollen-Holt 设计模式之 工厂模式  */   interface fruit{     public abstract void eat(); } ...

  8. python 设计模式之工厂模式 Factory Pattern (简单工厂模式,工厂方法模式,抽象工厂模式)

    十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了<Head First 设计模式>P109--P133 这25页 ...

  9. 设计模式之工厂模式(Factory)

    设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...

随机推荐

  1. C#面向对象 基础概念25个

    1.静态成员和非静态成员的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal 修饰符起什么作用?6.s ...

  2. .NET 3.5(5) - LINQ查询操作符之Select、Where、OrderBy、OrderByDescending

    .NET 3.5(5) - LINQ查询操作符之Select.Where.OrderBy.OrderByDescending 介绍    ·Select - Select选择:延迟    ·Where ...

  3. 简单的javascript实例一(时钟特效)

    方便以后copy 时钟特效 <html> <head> <meta http-equiv="Content-Type" content="t ...

  4. dev中 使用一些控件后,窗体屏蔽右键某些菜单

    使用Ribbon时,ribbonControl1.ShowToolbarCustomizeItem=false; 使用LayoutControl时,layoutControl1.AllowCustom ...

  5. 解决OpenWrt多拨刚开机拨号只拨上一次问题

    红色标注为需要权限755/etc/ppp/ip-up.d/ip-up: 一旦 PPP 连结建立后, pppd 会找寻 /etc/ppp/ip-up 指令稿 如果这个指令稿存在并且可以执行的话,那么 P ...

  6. CSS 3 属性学习大纲

    1. Gradient 渐变 2. RGBA 颜色透明 3. Border-radius 圆角 4. text-shadow 文字阴影 5. box-shadow 图层阴影 6. Transform ...

  7. xml drawable

    1.Shape drawable:改变组件的形状和渐变xml shape标签 corner标签:改变轮廓 gradient:颜色填充的渐变 android:angle  android:angle=“ ...

  8. python基础教程第3章——字符串

    1.字符串格式化 字符串格式化操作符%+转换标志+最小字段宽度+点后跟精度值+转换类型 String模块提供另外一种格式化方式 from string import Template s=Templa ...

  9. Session和Cookie的关系

    Session和Cookie关系 两者构建了web的回话数据 Cookie作为客户端的回话,Session为服务器端的 共同点: 都是1对1的,(一个客户一个独立的回话) 都以键值对的方式存储数据 都 ...

  10. linux arp攻击解决方法 测试很有效

    公司有台centos服务器中了arp攻击,严重影响业务,测试了很多方法都没解决,机房技术也没法处理. 通过下面方法,可以有效抵挡arp攻击.   1.环境 centos6.4   2.执行 arpin ...