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;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。