设计模式--工厂模式和抽象工厂模式
2015-04-04 12:49
495 查看
工厂模式的英文原文是:Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory method lets a class defer instantiation to subclass. 意思是定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到子类。
工厂模式主要是为创建对象提供了接口,工厂模式可分为三类:
简单工厂模式:又叫做静态方法模式,简单工厂模式就是工厂类根据传入的参数决定实例化哪个类的对象。
![](http://img.blog.csdn.net/20150404135036232?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFveWVxaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
工厂方法模式:工厂方法模式是new一个对象的替代品,因此在所有需要生成对象的地方都可以使用。它具有良好的封装性,代码结构清晰,如果一个调用者需要一个具体的产品对象,只要知道这个产品的类名即可,不需要知道这个产品的创建过程如何,降低了模块间的耦合度。优秀的扩展性,在增加产品类的情况下,只要适当的修改具体的工厂类就可以适应变化。屏蔽产品类,产品类是如何实现的,调用者不必关心,只需关注产品的接口即可。
![](http://img.blog.csdn.net/20150404135303687?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFveWVxaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
抽象工厂:
抽象产品:
抽象工厂模式:它的英文定义是:Provide an interface for creating families of ralated or dependent objects without specifying their concrete classes.意思是为创建一组相关或互相依赖的对象提供接口,而无须他们的具体实现类。抽象工厂模式是工厂方法的升级版本,针对的是一系列的产品,如果抽象工厂方法中只有一种产品,那么抽象工厂模式就退化为工厂方法模式。
![](http://img.blog.csdn.net/20150404141002025?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWFveWVxaXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
抽象工厂:
哈哈,正在学习,源码下载
工厂模式主要是为创建对象提供了接口,工厂模式可分为三类:
简单工厂模式:又叫做静态方法模式,简单工厂模式就是工厂类根据传入的参数决定实例化哪个类的对象。
工厂方法模式:工厂方法模式是new一个对象的替代品,因此在所有需要生成对象的地方都可以使用。它具有良好的封装性,代码结构清晰,如果一个调用者需要一个具体的产品对象,只要知道这个产品的类名即可,不需要知道这个产品的创建过程如何,降低了模块间的耦合度。优秀的扩展性,在增加产品类的情况下,只要适当的修改具体的工厂类就可以适应变化。屏蔽产品类,产品类是如何实现的,调用者不必关心,只需关注产品的接口即可。
抽象工厂:
package com.zz.factory; /** * 抽象工厂 * @author txxs * */ public interface Creator { /** * 工厂方法 * 创建一个产品对象,起输入的参数类型可以自行设置 */ public <T extends Product> T factory(Class<T> c); }
抽象产品:
package com.zz.factory; /** * 抽象产品 * @author txxs * */ public interface Product { //产品类提供的公共方法接口 public void method1(); public void method2(); }两个具体的实现:
package com.zz.factory; /** * 具体工厂 * @author txxs * */ public class ConcreteCreator implements Creator { @Override public <T extends Product> T factory(Class<T> c) { Product product = null; try{ product = (Product)Class.forName(c.getName()).newInstance(); }catch(Exception e){ } // TODO Auto-generated method stub return (T) product; } }
package com.zz.factory; public class ConcreteProduct implements Product { @Override public void method1() { // 业务逻辑处理代码 } @Override public void method2() { // 业务逻辑处理代码 } }
抽象工厂模式:它的英文定义是:Provide an interface for creating families of ralated or dependent objects without specifying their concrete classes.意思是为创建一组相关或互相依赖的对象提供接口,而无须他们的具体实现类。抽象工厂模式是工厂方法的升级版本,针对的是一系列的产品,如果抽象工厂方法中只有一种产品,那么抽象工厂模式就退化为工厂方法模式。
抽象工厂:
package com.zz.abfactory; /** * 抽象工厂 * @author txxs * */ public interface AbstractFactory { //创建产品A public ProductA factoryA(); //创建产品B public ProductB factoryB(); }测试类:
package com.zz.abfactory; /** * 测试类 * @author txxs * */ public class AbstractFactoryTest { public static void main(String[] args) { //定义两个工厂 AbstractFactory abstractFactory1 = new ConcreteFactory1(); AbstractFactory abstractFactory2 = new ConcreteFactory2(); //生产等级为1的产品A ProductA productA1 = abstractFactory1.factoryA(); //生产等级为2的产品A ProductA productA2 = abstractFactory2.factoryA(); //生产等级为1的产品B ProductB productB1 = abstractFactory1.factoryB(); //生产等级为2的产品B ProductB productB2 = abstractFactory2.factoryB(); //业务处理 productA1.method1(); productA2.method1(); productB1.method1(); productB2.method1(); } }
哈哈,正在学习,源码下载
相关文章推荐
- java中的设计模式 工厂 和抽象工厂模式 的例子
- 设计模式--(1)工厂模式与抽象工厂模式
- Php设计模式之工厂模式(三)【抽象工厂模式 AbstractFactory】
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- 设计模式之工厂模式与抽象工厂模式
- 设计模式之工厂方法模式与抽象工厂模式
- 设计模式之工厂模式系列(简单工厂,工厂模式,抽象工厂模式)
- 设计模式之工厂设计模式(二:抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- Java 可复用的面向对象的设计模式之 工厂模式Factory详解 :简单工厂模式 工厂方法模式 抽象工厂模式
- C#设计模式之工厂模式(Factory)--03 抽象工厂模式(Abstract Factory)
- 设计模式之工厂模式、抽象工厂模式、单例模式(C++代码)
- 设计模式之 工厂模式(二) 抽象工厂模式
- 设计模式之工厂方法模式与抽象工厂模式
- C#设计模式之工厂模式(Factory)--04 抽象工厂模式中访问具体产品类的属性
- java设计模式之工厂方法模式以及简单工厂模式还有抽象工厂模式
- Java设计模式二:抽象工厂模式(Abstract Factory)/工厂方法(Factory Method)
- iOS常用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)
- iOS常用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)
- 设计模式--工厂方法、抽象工厂模式