zoukankan      html  css  js  c++  java
  • 设计模式之工厂模式

    工厂模式

    简单工厂

    通过参数动态创建继承自同一接口的类。

    public class ShapeFactory {
        
       //使用 getShape 方法获取形状类型的对象
       public Shape getShape(String shapeType){
          if(shapeType == null){
             return null;
          }        
          if(shapeType.equalsIgnoreCase("CIRCLE")){
             return new Circle();
          } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
             return new Rectangle();
          } else if(shapeType.equalsIgnoreCase("SQUARE")){
             return new Square();
          }
          return null;
       }
    }

    工厂方法

    定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。让其子类实现工厂接口,返回的也是一个抽象的产品。

    public class CircleShapeFactory implement ShapeFactory {
       //使用 getShape 方法获取形状类型的对象
       public Shape getShape(){
          return new Circle();
       }
    }
    
    public class RectShapeFactory implement ShapeFactory {
       //使用 getShape 方法获取形状类型的对象
       public Shape getShape(){
          return new Rectangle();
       }
    }

    抽象工厂

    围绕一个超级工厂创建其他工厂。

    public class JinanPieFactory extends AbstractPieFactory {
       @Override
       public Pie makeApplePie(){
             return new SweetApplePie();
       }
       
       @Override
       public Pie makeBananaPie() {
          return new SweetBananaPie();
       }
    }
    
    public class YueyangPieFactory extends AbstractPieFactory {
       @Override
       public Pie makeApplePie(){
             return new XianApplePie();
       }
       
       @Override
       public Pie makeBananaPie() {
          return new XianBananaPie();
       }
    }
    
    public class FactoryProducer {
       public static AbstractPieFactory getFactory(String choice){
          if(choice.equalsIgnoreCase("JINAN")){
             return new JinanPieFactory();
          } else if(choice.equalsIgnoreCase("YUEYANG")){
             return new YueyangPieFactory();
          }
          return null;
       }
    }
  • 相关阅读:
    SpringMVC上传文件的三种方式(转载)
    几种流行Webservice框架性能对比(转载)
    @QueryParam和@PathParam使用方法比较
    MyEclipse开发Rest服务入门
    WebService SOAP、Restful和HTTP(post/get)请求区别
    Java WebService入门实例
    WebService 与 Socket 区别
    Double 数据保留两位小数二:直接截取小数后面两位,不进行四舍五入
    SVN 常识
    Android 友盟分享躺过的几个坑,大坑,坑爹啊
  • 原文地址:https://www.cnblogs.com/aaroncnblogs/p/8609161.html
Copyright © 2011-2022 走看看