工厂模式
- 什么时候使用:咱们明确地计划不一样条件下建立不一样实例时。主要解决接口选择的问题。
- 如何解决:定义一个工厂接口,让工厂类实现工厂接口。让调用者本身经过参数传递决定实例化建立哪个工厂类,返回的是一个抽象的工厂产品实例。
- 使用场景: 一、日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户能够选择记录日志到什么地方。 二、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。 三、设计一个链接服务器的框架,须要三个协议,"POP3"、"IMAP"、"HTTP",能够把这三个做为产品类,共同实现一个接口。
- 注意事项:复杂对象适合使用工厂模式,而简单对象,特别是只须要经过 new 就能够完成建立的对象,无需使用工厂模式。若是使用工厂模式,就须要引入一个工厂类,会增长系统的复杂度。
调用者经过参数传递到getShape(String)决定实例化哪个Shape
publicclassShapeFactory{
//使用 getShape 方法获取形状类型的对象
publicShape getShape(String shapeType){
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
returnnewCircle();
}elseif(shapeType.equalsIgnoreCase("RECTANGLE")){
returnnewRectangle();
}elseif(shapeType.equalsIgnoreCase("SQUARE")){
returnnewSquare();
}
return null;
}
}