群辉做网站服务器pythonsteam交易链接在哪看
工厂模式的分类
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
简单工厂模式
简单工厂模式又称为静态工厂模式,实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
其实就是将一个具体类的实例化交给一个静态工厂方法来执行,它不属于GOF的23种设计模式,但现实中却经常会用到,而且思想也非常简单。
简单工厂模式的结构
注意:看完三种工厂模式的精讲,我觉得是差不多的,思想也都差不多,主要是理解找个合适的地方的使用。
工厂角色(Creator) | 是简单工厂模式的核心,它负责实现创建所有具体产品类的实例。工厂类可以被外界直接调用,创建所需的产品对象。 |
抽象产品角色(Product) | 是所有具体产品角色的父类,它负责描述所有实例所共有的公共接口。 |
具体产品角色(Concrete Product) | 继承自抽象产品角色,一般为多个,是简单工厂模式的创建目标。工厂类返回的都是该 |
简单工厂模式的使用场景
只有一个工厂类,所以工厂类中创建的对象不能太多,否则工厂类的业务逻辑就太复杂了,不易维护和扩展。另外由于工厂类封装了对象的创建过程,所以客户端不关心对象的创建过程,只需要知道类型就好。
(1)需要创建的对象较少。
(2)客户端只需要知道所需对象的类型。
简单实例代码
//定义抽象产品类:
public abstract class Product {public abstract void use();
}//定义具体产品类:
public class ProductA extends Product {@Overridepublic void use() {System.out.println("使用产品A");}
}public class ProductB extends Product {@Overridepublic void use() {System.out.println("使用产品B");}
}//定义工厂类:
public class ProductFactory {public static Product createProduct(String type) {if ("A".equals(type)) {return new ProductA();} else if ("B".equals(type)) {return new ProductB();} else {throw new IllegalArgumentException("产品类型不存在");}}
}//调用客户端创建产品(实例):
public class Client { public static void main(String[] args) { Product productA = ProductFactory.createProduct("A"); Product productB = ProductFactory.createProduct("B"); productA.use(); // 输出:使用产品A productB.use(); // 输出:使用产品B }
}
其实有时候看代码能够更清楚的理解定义。