您的位置:首页 > 其它

设计模式之1--简单工厂模式

2017-05-03 14:33 169 查看
简单工厂模式学习笔记

首先将需要创建的各种不同对象的相关代码封装到不同的类中,这些类成为具体产品类,而将它们公共的代码进行抽象和提取后封装在一个抽象产品类中,每一个具体产品类都是抽象产品类的子类;然后提供一个工厂类用户创建各种产品,在工厂类中提供一个创建产品的工厂方法,该方法可以根据所传入的参数不同创建不同的具体产品对象;客户端只需调用工厂类的工厂方法并传入相应的参数即可得到一个产品对象。

简单工厂模式:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又被称为静态工厂方法模式,属于类创建型模式。

简单工厂模式主要是分为工厂类,抽象产品类和具体产品类

抽象产品类:

abstract class Product {
public void methodSame(){
/*公共方法的实现*/
}

//声明抽象业务方法
public abstract void methodDiff();
}


具体产品A:

class ConcreteProductA extends Product {
public void methodDiff() {
//业务方法的实现
}
}


具体产品B:

class ConcreteProductB extends Product {
public void methodDiff() {
//业务方法的实现
}
}


工厂类:

class Factory {
public static Product getProduct(String arg) {
Product product = null;
if(arg.equals("A")) {
product = new ConcreteProductA();
} else if(arg.equals("B")) {
product = new ConcreateProductB();
}
return product;
}
}


客户端调用:

class Client {
public static void main(String args[]) {
Product product;
product = Factory.getProduct("A");
product.methodSame();
product.methodDiff();
}
}


把产品共同的行为给抽象出来,然后具体产品类继承抽象产品类,而该模式核心的方法是工厂类,它还有一个静态getProduct()方法,客户端直接调用该静态方法,传入需要的产品类型就可以返回Product类型的对象。



简单工厂模式总结:

简单工厂模式提供了专门的工厂类用于创建对象,将对象的创建和使用分离开。

优点

(1) 工厂类包含必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以直接消费产品。实现了对象创建和使用的分离。

(2) 客户端无需知道具体产品类的类名,只需要知道具体产品类所对应的参数即可。

缺点

由于所有的产品创建都是在工厂类进行的,一旦工厂类不能正常工作,整个系统都会受到影响。简单工厂模式由于使用了静态工厂方法,造成工厂角色无法行程基于继承的等级结构。

适用场景: 工厂类负责创建的对象比较少,客户只知道传入工程类的参数,对于如何创建对象不关心。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息