1.简单工厂模式
定义:一个工厂类,根据传入的参数不同返回不同的实例,被创建的实例具有共同的父类或接口。
由于工厂类封装了对象的创建过程,所以客户端应该不关心对象的创建
(1)需要创建的对象较少。
(2)客户端不关心对象的创建过程。
shape:
public interface Shape {
public abstract void draw();
}
circle:
public class CircleShape implements Shape{
public CircleShape(){
System.out.println("circleShape");
}
@Override
public void draw() {
System.out.println("draw:circle");
}
}
rect:
public class RectShape implements Shape{
@Override
public void draw() {
System.out.println("draw:Rect");
}
public RectShape(){
System.out.println("rectShape");
}
}
简单工厂类的实现:我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象
public class factory {
public static Shape getshape(String str){
Shape shape = null;
if(str.equals("circle")){
shape = new CircleShape();
}
else if(str.equals("rect")){
shape = new RectShape();
}
else{
System.out.println("empty");
}
return shape;
}
}
test:
public class test {
public static void main(String[] args) {
String str = "rect";
Shape shape = factory.getshape(str);
shape.draw();
}
}
2.工厂方法模式
在工厂方法模式中,我们不再提供一个统一的工厂类来创建所有的对象,而是针对不同的对象提供不同的工厂。也就是说每个对象都有一个与之对应的工厂。
简单工厂对比,简单工厂只有一个统一的工厂类,而工厂方法是针对每个要创建的对象都会提供一个工厂类,这些工厂类都实现了一个工厂基类
3.抽象工厂模式