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; } }