创建型模式
工厂方法模式
interface Vechical
{
void run();
}
public class Car implements Vechical
{
@Override
void run(){...}
}
public class Plane implements Vechical
{
@Override
void run(){...}
}
public VechicalFactory()
{
public Vechical CreateVechical(String type)
{
if (type.equals("Car"))
{
return new Car();
}
else if (type.equals("Plane"))
{
return new Plane();
}
}
}
结构型模式
适配器模式
LegacyRectangle类的display方法需要一个点坐标与长和宽作为参数
class LegacyRectangle
{
void display(int x1, int y1, int w, int h) //需要一个点的坐标与长方形的宽和高
{...}
}
但是客户端只能提供对角的两点的坐标
class Client
{
public display()
{
new LegacyRectangle,display(int x1, int y1, int x2, int y2);
}
}
因此可使用适应器模式来设计
interface Shape
{
void display(int x1, int y1, int x2, int y2);
}
class Rectangle implements Shape
{
void display(int x1, int y1, int x2, int y2)
{
new Rectangle().display(x1,y1,x2-x1,y2-y1);
}
}
class LegacyRectangle
{
void display(int x1, int y1, int w, int h)
{...}
}
class Client
{
Shape shape = new Rectangle();
public display()
{
shape.display(x1,y1,x2,y2);
}
}
装饰器模式
行为型模式
策略模式
模板模式
迭代器模式
访问者模式