外观模式、工厂模式、策略模式与迭代器模式简单对比

一、外观模式(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;
      }
经验分享 程序员 微信小程序 职场和发展