Abstract Factory--对象创建型模式

  一个类创建模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。

  意图 :提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的实现类

  结构:例子如下

  

  这样客户调用这些操作已获得组件实例,但是客户并不知道他们使用的是哪些具体类

  适用性:
    一个系统要独立于它的产品的创建、组合和表示时。
    一个系统要由多个产品系列中的一个配置时。
    当你要强调一系列相关产品对象的设计以便进行联合使用时。
    当你提供一个产品类库,而只想显示他们的接口而不是实现时。

  效果:
    它分离了具体的类
    它使得易于交换产品系列
    它有利于产品的一致性
    难以支持新种类的产品(支持新种类的产品就需要扩展该工厂的接口,这将涉及到Abstract Factory类及其子类的改变)

  实现:
    将工厂作为一个单例模式
    Abstract Factory仅声明一个创建产品的接口。为每个产品顶一个工厂方法。要求每个产品系列都要有一个新的具体工厂子类

public abstract class ComputerFactory {
	public abstract zhuban createA();
	public abstract xianka createB();
}

class DellFactory extends ComputerFactory{
	public zhuban createA() {
		return new A();
	}
	public xianka createB() {
		return new B();
	}
	
	
}
class AcerFactory extends ComputerFactory{
	public zhuban createA() {
		return new A1();
	}
	public xianka createB() {
		return new B1();
	}
}
class ThinkPadFactory extends ComputerFactory{
	public zhuban createA() {
		return new A1();
	}
	public xianka createB() {
		return new B1();
	}
	public C shubiao(){
		return new C();
	}
}

class zhuban{}
class xianka{}
class A extends zhuban{}
class A1 extends zhuban{}
class B extends xianka{}
class B1 extends xianka{}
class C{}

有几个疑问?

当我使用Spring注入Computer的时候,如果注入的是ThinkPadFactory,这个C怎么取得?

当我使用Spring注入ThinkPadFactory的时候,到时如果要替换Factory时候,难道要改代码?

有什么好的方法解决,或什么好的思路
posted @ 2011-06-28 21:50  我滴地盘在哪  阅读(261)  评论(0)    收藏  举报