Professional Java EE Design Pattherns(java EE设计模式解析与应用)阅后总结

工厂模式目的:为了创建对象,创建对象的逻辑封装在工厂类中,使客户端与创建对象分割开,客户端不需要考虑接口或类的不同实现,只需要通过工厂(工厂方法或者抽象工厂)获取接口实现的一个实例即可。

这样的好处是重构的改变只会对一个点影响。

通常情况下,工厂本身会被实现为单例或者是静态类,因为一般来说只需要一个工厂实例即可,这么做将会是工厂对象的创建集中到一个地方,有利于更好地对代码的修改和更新,并减少错误。

工厂模式有两种模式:

    一个是工厂方法:提供一个方法返回一个新创建的对象。

    另外一个是抽象工厂:将创建对象委托给子类实现。

工厂方法:GoF一书是这样描述工厂方法模式的:“定义一个用于创建对象的接口,不过让其子类决定实例化哪个类”。Head First Design Patterns补充了一点:“工厂方法将类的实例化推迟到子类”。

使用普通代码实现工厂方法:

DrinkMachine.class

/**
 * 抽象类
 * @author Administrator
 *抽象工厂模式,将对象的创建委托给子类
 */
public abstract class DrinkMachine {
	//抽象方法 给子类创建对象
	public abstract Drink dispenseDrink();
	public String displayMessage()
	{
		return "Thank you for your custom.";
	}
}

CoffeeMachine.class

/**
 * 工厂类
 * @author Administrator
 *工厂方法模式:提供一个方法来返回新创建的对象
 */
public class CoffeeMachine extends DrinkMachine{

	@Override
	public Drink dispenseDrink() {
		// TODO Auto-generated method stub
		return new Coffee();
	}

}

SoftDrinkMachine.class

/**
 * 工厂方法模式:提供一个方法来返回新创建的对象
 * @author Administrator
 *
 */
public class SoftDrinksMachine extends DrinkMachine
{

	@Override
	public Drink dispenseDrink() {
		// TODO Auto-generated method stub
		return new SoftDrink();
	}
		
}

Drink接口

public interface Drink {}

Coffee.class

public class Coffee implements Drink {

}

SoftDrink.class

public class SoftDrink implements Drink 
{
	
}

 

转载于:https://my.oschina.net/u/3278466/blog/875221

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值