工厂方法模式和抽象工厂模式
工厂模式是:定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类。
它有个特点,就是通常工厂的类层次与产品的类层次几乎是一样的树。如果说工厂是你的影子,你就是产品了。在你平时未用到模式的时候,你需要什么就new一个,这种情况就好比你躺在地上,人影合一了。那什么时候需要工厂模式呢。看看定义:“使一个类的实例化延迟到子类”,这个是关键,当你有必要延迟实例化的时候才需要用工厂模式。那什么情况下要延迟呢,在单例模式中有惰性单例(就是单例那个静态属性)……等等,就是一开始你还不适合立刻就创建该对象,你还需要一些资源或其它准备工作。整个系统的运行不像单个程序那样,系统需要很多资源和多方面的协同工作。
抽象工厂是:提供一个创建一系列相关或相互依赖对象的接口,而无虚指定他们的具体类。
抽象工厂比工厂模式复杂的多。如果楼主说他们像可能是他们都叫工厂,都生成产品,都是接口型设计模式。但是我觉得他们是两个不同的设计模式。首先他们的目的是不同的。工厂是为了“延迟创建”,而抽象工厂是提供一系列的接口,是为了组织创建对象的灵活性,避免重复,避免耦合低内聚。
设计模式本身语言晦涩难懂,这个抽象工厂我也是没次都看着头昏眼花^_^,举个运用他的场景:
1。你有两台单色打印机,一台黑白墨的,一台彩墨的。
2。你有两种文件要打,一种讲演搞,一种图片
3。要求是讲演稿如果是有图就打黑白的,没图打彩色的,照片有字的就打黑白的,没字就打彩色的。