设计模式 (一)简单工厂模式(SimpleFatory)

原创 2012年03月30日 23:22:37

一点点从基础做起,23中设计模式一天看一个

首先学习了一个UML,但是没有能下到RationalRose,想去官网上下载,但是似乎收费,索性就用手头上的StartUML,其实就是一个工具,能实现就行了

SimpleFactory——简单设计模式原理图




package com.designpattern.simplefactory;

public class Client {

	public static void main(String[] args) {
		Animal tiger = SimpleFactory.createAnimal("Tiger");
		tiger.eat();
		Animal dolphin = SimpleFactory.createAnimal("Dolphin");
		dolphin.eat();
	}
}

package com.designpattern.simplefactory;

public class SimpleFactory {
	public static Animal createAnimal(String animalName) {
		if ("Tiger".equals(animalName)) {
			return new Tiger();
		} else if ("Dolphin".equals(animalName)) {
			return new Dolphin();
		}
		return null;
	}
}

package com.designpattern.simplefactory;

public interface Animal {
	public void eat();
}

package com.designpattern.simplefactory;

public class Dolphin implements Animal {

	@Override
	public void eat() {
		System.out.println("Dolphin is eating");
	}

	public void swim() {
		System.out.println("Dolphin is swimming");
	}

}

package com.designpattern.simplefactory;

public class Tiger implements Animal {

	@Override
	public void eat() {
		System.out.println("Tiger is eating");
	}

	public void run() {
		System.out.println("Tiger is running");
	}

}

简单工厂设计模式中,客户端不在负责对象的创建,而是把这个任务丢给了具体的工厂类,客户端置负责对对象的简单的调用,从而明确了各个类的职责。

由于简单的工厂模式使用静态的方法来创建对象,这就导致了静态方法无法被继承。另一方面,这个工厂类负责所有对象的创建,这回导致虽然具体的产品的不断增多,可能客户端对于某些产品的创建方式会有不同的要求,这样的话,就要不断的修改工厂类,增加了相应的判断逻辑,不利于后期的维护。

其实从这个简单的工厂模式的原理可以看出,原来在客户端要做的创建和初始化工作都被移到了工厂里去做,这样做,虽然是把创建对象和初始化工作于客户端分离了,实现了这部分的责任分配,但所有对象创建和初始化的工作还是都集中在了这个具体的工厂类里面,这样如果要创建的对象很多,这个工厂将会非常庞大,仍然不利于后期代码的维护。因此简单工厂模式只是使用与要创建的对象比较少和简单的时候,因此这个设计模式看一下过去就行了,也没有必要再这个上面下多大功夫,毕竟还是比较简单的东西,如果多了怎么办呢,这样就到了期待的下一个设计模式Factory Method

【设计模式】简单工厂模式与工厂方法模式详细解读

1.前言     设计模式,各具特色,今天在此总结一下常见模式中 简单工厂模式与工厂方法模式的区别与联系 2.两种模式概要    1. 简单工厂模式         对于简单工厂模式的介绍,请...
  • yudandan10
  • yudandan10
  • 2013年03月10日 15:09
  • 4688

JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一...
  • jason0539
  • jason0539
  • 2014年04月07日 17:36
  • 220754

简单工厂模式——加减乘除

还记得刚入门C语言的时候经常要写一些加加减减的程序来练练手。好吧,既然学了新语言,那就用新语言来写个简单的计算器吧!public class Calculator { public stati...
  • u010429311
  • u010429311
  • 2016年04月01日 00:01
  • 1655

设计模式 (一)简单工厂模式(SimpleFatory)

一点点从基础做起,23中设计模式一天看一个 首先学习了一个UML,但是没有能下到RationalRose,想去官网上下载,但是似乎收费,索性就用手头上的StartUML,其实就是一个工具,能实现...
  • han_jiang_xue
  • han_jiang_xue
  • 2012年04月16日 10:40
  • 261

设计模式 (一)简单工厂模式(SimpleFatory)

一点点从基础做起,23中设计模式一天看一个 首先学习了一个UML,但是没有能下到RationalRose,想去官网上下载,但是似乎收费,索性就用手头上的StartUML,其实就是一个工具,能实现就行...
  • lanchengxiaoxiao
  • lanchengxiaoxiao
  • 2012年04月12日 15:39
  • 219

设计模式之简单工厂模式

  • 2014年08月17日 14:51
  • 33KB
  • 下载

设计模式在android中的应用之1,简单工厂模式

  • 2015年08月17日 17:14
  • 3.09MB
  • 下载

设计模式之简单工厂模式

  • 2014年04月23日 11:23
  • 29KB
  • 下载

设计模式-简单工厂模式《搭积木》

  • 2012年05月24日 18:07
  • 15KB
  • 下载

设计模式——简单工厂模式

  • 2013年08月10日 15:54
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式 (一)简单工厂模式(SimpleFatory)
举报原因:
原因补充:

(最多只允许输入30个字)