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

一、外观模式(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;
      }   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值