刚开始接触编程是,总会提到设计模式,在这里将一般定义的设计模式一一进行说明,先从简单的设计模式开始。

        创建型-工厂模式

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  假设有这样一个工厂,可以生产几种不同类型的笔;我们只向工厂说明一下我们需要的笔型号,工厂就给我们提供相应型号的笔。

  假设我们有一个工厂对象(ShapeFactory),可以建几种不同样式的外形(Shape);我们只向工厂对象(ShapeFactory)传我们需要创建的外形(Shape)的参数(如描述参数),对象(ShapeFactory)就给我们穿件不同的外形(Shape)。

  本文引用W3Cschool中的java教程中设计模式,链接地址https://www.w3cschool.cn/linux/linux-install.html

  外形Shape的接口

 

  public interface Shape {

     void draw();

  }

 

 

 

  不同类型的外形对象,即Shape接口的实现类

  Rectangle.java

 

  public class Rectangle implements Shape {
    @Override
    public void drow() {
      System.out.println("Inside Rectangle::draw() method.");

    }
  }

 

  Square.java

  public class Square implements Shape {

    @Override
    public void drow() {
      System.out.println("Inside Square::draw() method.");
    }

  }

  工厂生产的外形(Shape)有了,几种简单的Shape实现类有了(即几种不同的外形),现在就缺少工厂对象(ShapeFactory)了。工厂对象ShapeFactory中我们需要提供一个方法,用来生产几种不同的外形对象。本文方法为getShape(String shapestyle)。

  ShapeFactory.java

public class ShapeFactory {
    public Shape getShape(String shapestyle) {
        if(shapestyle==null) {
            return null;
        }
        if("Rectangle".equalsIgnoreCase(shapestyle)) {
            return new Rectangle();
        }
        if ("Square".equalsIgnoreCase(shapestyle)) {
            return new Square() ;
        }
        return null;
    }

}

  好了,到现在为止,我们的工厂已经建好了。怎样用这个工厂呢,我现在需要用工厂的到一个Square对象,也不叫简单了。现在用在ShapeFactoryTest用穿件Square对象为例子

  ShapeFactoryTest.java

public class ShapeFactoryTest {
    public static void main(String[] args) {
        ShapeFactory shapeFactory = new ShapeFactory();
        Shape shape = shapeFactory.getShape("Square");
        shape.drow();
    }

}

  程序运行结果

Inside Square::draw() method.

综上,一个简单的工厂模式已经完成了。


为什么说ShapeFactoryTest就是工厂了呢,这样编程怎么就是工厂模式呢?
应为我们自己不单独new
Square()和new Rectangle()对象,这个对象有ShapeFactoryTest创建(生产),所以这种设计的方式被大家叫做工厂模式。 
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄