设计模式——工厂模式

 

作为一名面向对象的Java工程师,设计模式肯定是必会的,之前虽然也看了一些设计模式的资料,也学习过,但是没有动手写下学习的心得,有的时候想再去看看的时候记不清在哪里,干脆就写道这个博客里,以后忘记了也好有复习的地方。

菜鸟教程设计模式地址:http://www.runoob.com/design-pattern/design-pattern-intro.html

有兴趣的可以去菜鸟教程的设计模式教程里看一下,我个人觉得写的挺好的,下面就写一下我个人看了之后的学习心得。

首先说一下工厂设计模式的特点。

  1. 工厂设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
  2. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑。
  3. 并且是通过使用一个共同的接口来指向新创建的对象。

主要有一下及部分组成:

  1. 接口
  2. 接口的实现类
  3. 工厂类

接口
 

package com.soft.shape;

/**
 * 接口,作为子类的模板。
 * @author chenlei
 *
 */
public interface Shape {
	public void draw();
}

接口的实现类1

package com.soft.shapeImpl;

import com.soft.shape.Shape;
/**
 * 接口的实现类,
 * @author chenlei
 *
 */
public class Cirle implements Shape{

	@Override
	public void draw() {
		System.out.println("画了一个圆形");
	}

}

接口的实现类2

package com.soft.shapeImpl;

import com.soft.shape.Shape;

/**
 * 接口的实现类
 * @author chenlei
 *
 */
public class Rectangle implements Shape{

	@Override
	public void draw() {
		System.out.println("画了一个长方形");
	}

}

接口的实现类3

package com.soft.shapeImpl;

import com.soft.shape.Shape;

/**
 * 接口的实现类
 * @author chenlei
 *
 */
public class Triangle implements Shape {

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("画了一个三角形");
	}

}

工厂类 

package com.soft.factory;

import com.soft.shape.Shape;
import com.soft.shapeImpl.Cirle;
import com.soft.shapeImpl.Rectangle;
import com.soft.shapeImpl.Triangle;
/**
 * 工厂类,通过这一个工厂类可以返回不同的对象。
 * @author chenlei
 *
 */
public class Factory {
	//实例化对象的具体方法。
	public Shape getShape(String shape){
		//创建一个返回的图形对象,
		Shape sp;
		//使用switch分支结构来判断应该返回那个具体对象,
		switch (shape) {
		case "Cirle":
			sp = new Cirle();
			break;
		case "Rectangle":
			sp = new Rectangle();
			break;
		case "Triangle":
			sp = new Triangle();
			break;
		default:
			sp = new Cirle();
			break;
		}
		return sp;
	}
}

测试类

package com.soft.test;

import com.soft.factory.Factory;
import com.soft.shape.Shape;

/**
 * 测试工厂方法
 * @author chenlei
 *
 */
public class Test {
	public static void main(String[] args) {
		Factory factory = new Factory();
		Shape shape1 = factory.getShape("Cirle");
		Shape shape2 = factory.getShape("Rectangle");
		Shape shape3 = factory.getShape("Triangle");
		shape1.draw();
		shape2.draw();
		shape3.draw();
	}
}

打印输出的结果

作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。

有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值