博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
工厂设计模式
阅读量:6930 次
发布时间:2019-06-27

本文共 2087 字,大约阅读时间需要 6 分钟。

先通过例子理解一下

第1步:创建一个接口

Shape.java

1 public interface Shape {2    void draw();3 }

第2步:创建几个实现类

Rectangle.java

1 public class Rectangle implements Shape {2 3    @Override4    public void draw() {5       System.out.println("Inside Rectangle::draw() method.");6    }7 }

Square.java

1 public class Square implements Shape {2 3    @Override4    public void draw() {5       System.out.println("Inside Square::draw() method.");6    }7 }

Circle.java

1 public class Circle implements Shape {2 3    @Override4    public void draw() {5       System.out.println("Inside Circle::draw() method.");6    }7 }

第3步:创建工厂根据给定的信息生成具体类的对象

ShapeFactory.java

1 public class ShapeFactory { 2  3    //use getShape method to get object of type shape  4    public Shape getShape(String shapeType){ 5       if(shapeType == null){ 6          return null; 7       }         8       if(shapeType.equalsIgnoreCase("CIRCLE")){ 9          return new Circle();10 11       } else if(shapeType.equalsIgnoreCase("RECTANGLE")){12          return new Rectangle();13 14       } else if(shapeType.equalsIgnoreCase("SQUARE")){15          return new Square();16       }17 18       return null;19    }20 }

第4步:演示使用工厂通过传递类型等信息来获取具体类的对象

FactoryPatternDemo.java

1 public class FactoryPatternDemo { 2  3    public static void main(String[] args) { 4       ShapeFactory shapeFactory = new ShapeFactory(); 5  6       //get an object of Circle and call its draw method. 7       Shape shape1 = shapeFactory.getShape("CIRCLE"); 8  9       //call draw method of Circle10       shape1.draw();11 12       //get an object of Rectangle and call its draw method.13       Shape shape2 = shapeFactory.getShape("RECTANGLE");14 15       //call draw method of Rectangle16       shape2.draw();17 18       //get an object of Square and call its draw method.19       Shape shape3 = shapeFactory.getShape("SQUARE");20 21       //call draw method of circle22       shape3.draw();23    }24 }

第5步:验证输出结果

验证输出结果如下:

1 Inside Circle::draw() method.2 Inside Rectangle::draw() method.3 Inside Square::draw() method.

转载于:https://www.cnblogs.com/wangzhisdu/p/8136868.html

你可能感兴趣的文章
【转】【OPenGL】OPenGL 画图板-- 中点算法画圆
查看>>
九宫格数独--回溯法
查看>>
Eclipse从数据库逆向生成Hibernate带注解的实体类
查看>>
(原創) 如何破解Quartus II 8.1? (SOC) (Quartus II) (Nios II)
查看>>
Nginx 禁止IP访问
查看>>
c语言 灵活性的表现
查看>>
30分钟 让你成为一个更好的程序员
查看>>
php调用matlab
查看>>
webgame开发中的文件解密
查看>>
test
查看>>
开源重复数据删除软件
查看>>
SharePoint工作流解决方案QuickFlow系列(1)--QuickFlow入门
查看>>
Objective-C(IOS)推荐的属性读写方法
查看>>
oracle set指令
查看>>
vi编辑器使用技巧篇1
查看>>
HTTP协议状态码
查看>>
有感于dark channel的发现
查看>>
重读数据结构——线性表
查看>>
网页中, 代码调用360手机助手一键安装程序到手机
查看>>
IOS详解TableView——选项抽屉(天猫商品列表)
查看>>