码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-09-12 20:32:27      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

1.    简单工厂模式

1.1 概述

    又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例。

1.2 优点

    客户端不需要在负责对象的创建,从而明确了各个类的职责。

1.3 缺点

    这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护

2.     代码


  • Animal抽象类-Animal.java 


package cn.itcast_01;

public abstract class Animal {
	public abstract void eat();
}



  • 动物工厂-AnimalFactory.java



package cn.itcast_01;

public class AnimalFactory {

	private AnimalFactory() {
	}

	// public static Dog createDog() {
	// return new Dog();
	// }
	//
	// public static Cat createCat() {
	// return new Cat();
	// }

	public static Animal createAnimal(String type) {
		if ("dog".equals(type)) {
			return new Dog();
		} else if ("cat".equals(type)) {
			return new Cat();
		} else {
			return null;
		}
	}
}



  • 具体狗类:Dog.java



package cn.itcast_01;

public class Dog extends Animal {

	@Override
	public void eat() {
		System.out.println("狗吃肉");
	}
}



  • 具体猫类:Cat.java



package cn.itcast_01;

public class Cat extends Animal {

	@Override
	public void eat() {
		System.out.println("猫吃鱼");
	}
}



  • 测试类:AnimalDemo.java



package cn.itcast_01;

public class AnimalDemo {
	public static void main(String[] args) {
		// 具体类调用
		Dog d = new Dog();
		d.eat();
		Cat c = new Cat();
		c.eat();
		System.out.println("------------");

		// 工厂有了后,通过工厂给造
		// Dog dd = AnimalFactory.createDog();
		// Cat cc = AnimalFactory.createCat();
		// dd.eat();
		// cc.eat();
		// System.out.println("------------");

		// 工厂改进后
		Animal a = AnimalFactory.createAnimal("dog");
		a.eat();
		a = AnimalFactory.createAnimal("cat");
		a.eat();

		// NullPointerException
		a = AnimalFactory.createAnimal("pig");
		if (a != null) {
			a.eat();
		} else {
			System.out.println("对不起,暂时不提供这种动物");
		}
	}
}





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

标签:

原文地址:http://my.oschina.net/ilaoda/blog/505367

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!