一、外观模式(Façade设计模式)
属于结构式模式
作用:简化客户端与内部子系统之间的接口,让用户可以更简单的使用程序功能
适用:子系统相对独立时为外界提供访问模块
实现:在客户端和复杂系统之间再添加一层
其中Demo调用时
ShapeMaker shapeMaker = new ShapeMaker();
shapeMaker.drawCircle();
二、工厂模式(Factory设计模式)
属于创建式模式
作用: 解决接口的选择问题
适用:多个产品在同一工厂加工时
实现:创建的过程在子类中执行,用户输入对于字符串即可
其中Factory中
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
} else if(shapeType.equalsIgnoreCase("RECTANGLE")){
return new Rectangle();
} else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
Demo的调用为
ShapeFactory shapeFactory = new ShapeFactory();
//获取 Circle 的对象,并调用它的 draw 方法
Shape shape1 = shapeFactory.getShape("CIRCLE");
//调用 Circle 的 draw 方法
shape1.draw();
工厂模式和外观模式的对比:
这两个模式的结构都非常的相似,但是工厂模式的作用主要是体现在创建的过程上,可以使创建子类的操作简化。而外观模式主要体现在简化客户使用功能的过程。
三、策略模式(Strategy设计模式)
属于行为型模式
作用:可方便调用多种相似算法,免除if…else的麻烦
适用:在同一场景需要用到不同策略(功能)时
实现:实现同一个接口,将这些算法封装成一个一个的类,任意地替换
注:如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题
其中Demo的调用时
Context context = new Context();
context.SetStrategy(new OperationAdd());
四、迭代器模式(Iterator设计模式)
属于行为型模式。
该设计模式其实就是给类中内容专门写一个方法,用来有序输出类中元素。
public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};
@Override
public Object next() {
if(this.hasNext()){
return names[index++];
}
return null;
}