工厂模式:工厂模式(Factory Pattern)是java中最常用最常用的设计模式之一,这种类型的模式是属于创建型模式,它提供了一种创建对象的最佳方式,工厂模式,我们在创建对象时不会向客户端暴露创建逻辑,并且通过使用共同的接口来创建新的对象。
工厂模式介绍:
①意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行
②主要解决:解决接口选择的问题
③何时使用:我们明确计划不同条件下创建不同实例时
④如何解决:让其子类实现工厂接口
⑤关键代码:创建过程在其子类进行
工厂模式的优缺点及注意事项:
优点:创建者创建对象时只需对象名称即可;扩展性高;安全性强。
缺点:每增加一个产品时,都需要增加一个具体的类和对象实现工厂,使得系统中类的个数增加,在一定程度上增加了系统的复杂度,同时也增加了系统对具体类的依赖。
注意事项:作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式,复杂的对象适用于工厂模式,而对于简单的对象就无须使用工厂模式,尤其是通过new出来的对象,使用工厂模式会增加系统的复杂度。
工厂模式的实现:
步骤1:创建一个接口Shape
public interface Shape{
void draw();
}
步骤2:创建实现接口的实体类Rectangle、Square、Circle
public class Rectangle implements Shape{
@Override
public void draw(){
System.out.println("学习java");
}
}
public class Square implements Shape{
@Override
public void draw(){
System.out.println("学习java");
}
}
public class Circle implements Shape{
@Override
public void draw(){
System.out.println("学习java");
}
}
步骤3:创建工厂(FactoryShape),生成基于给定信息的实体类的对象
public class FatoryShape{
//创建getshape方法获取类的对象
public Shape getshape(String factoryType){
if(factoryType==null){
return null;
}else if(factoryType.equalsIgnoreCase("Rectangle")){
return new Rectangle();
}else if(factoryType.equalsIgnoseCase("Square")){
return new Square();
}else if(factoryType.equalsIgnlseCase("Circle")){
return new Circle();
}
return null;
}
}
步骤4:使用工厂,通过传递了类型信息来获取实体类的对象
public class FactoryPatternDemo{
public static void mian(String []args){
FactoryShape fs=new FactoryShape();
//获取Rectangle对象,并调用draw方法
Shape shape1=fs.getshape("Rectangle");
//调用draw方法
shape1.draw();
//获取Square对象,并调用draw方法
Shape Shape2=fs.getshape("Square");
//调用draw方法
shape2.draw();
//获取Circle对象,并调用draw方法
Shape shape3=fs.getshape("Circle");
//调用draw方法
shape3.draw();
}
}
------------------------------------------------------------over---------------------------