Phong Shading
Phong shading is more advanced than flat and Gouraud shading, but not without a penalty. Phong shading is so computationally intensive that it is not feasible to use in real-time without having some serious hardware action going on. What differentiates Phong shading from Gouraud shading is that instead of doing the work to find out the intensity for light and shading on the vertices of the polygon, you do it for each pixel. Obviously, this is a lot more taxing from a calculations standpoint.
To compute Phong shading, you need to find out the normal for each vertex. Then, this information is interpolated to find out the normals for all of the pixels in between. The interpolation is, again, done linearly. This data is then used to find out the intensity. Phong shading is more complex but looks better. The reason why is because you are getting intensity values for each pixel on the polygon's face. Thus, Phong shading is more accurately able to represent specular highlights and reflections from different light sources.
As you can see from the picture, which shows a light source and the resulting specular highlights on the object, Phong shading is able to show the reflections from the light source's position in relation to the various polygons that make up the image. In the case of Gouraud shading, the intensities for the pixels on the surface of the polygon are determined by the normals of the vertices only, so there is a smooth shading across the polygon's face. However, highlights can't be achieved, only a gradient determined by the brightness at the specific vertices.