Problem
Factory is design pattern in common usage. Implement a ShapeFactory
that can generate correct shape.
Example
ShapeFactory sf = new ShapeFactory();Shape shape = sf.getShape("Square");shape.draw(); ----| || | ----shape = sf.getShape("Triangle");shape.draw(); /\ / \ /____\shape = sf.getShape("Rectangle");shape.draw(); ---- | | ----
Note
这道题考了interface & implementation & override,具体概念如下:
Interface: A Java interface is a bit like a class, except that it can only contain method signatures and fields, which is saying that it cannot contain any implementation of the methods. You can use interface to achieve polymorphism.
Implementation: To declare a class that implements an interface, you have to include an implements
clause in the class definition. Your class can implement more than one interface.
Overriding: If subclass provides the specific/close implementation of the method that has been provided by one of its parent class, it is known as method overriding.
除此之外,还需要注意正则表达式的写法。
Solution
interface Shape { void draw();}class Rectangle implements Shape { @Override public void draw() { System.out.println(" ----"); System.out.println("| |"); System.out.println(" ----"); }}class Square implements Shape { @Override public void draw() { System.out.println(" ----"); System.out.println("| |"); System.out.println("| |"); System.out.println(" ----"); }}class Triangle implements Shape { @Override public void draw() { System.out.println(" /\\"); System.out.println(" / \\"); System.out.println("/____\\"); }}public class ShapeFactory { public Shape getShape(String shapeType) { if (shapeType.equalsIgnoreCase("Rectangle")) return new Rectangle(); else if (shapeType.equalsIgnoreCase("Square")) return new Square(); else if (shapeType.equalsIgnoreCase("Triangle")) return new Triangle(); return null; }}