2、工厂方法模式

2、工厂方法模式

工厂方法模式分三中:简单工厂模式、工厂方法模式、抽象工厂模式

 

1、简单工厂模式:根据一个工厂类,里面加一些逻辑判断来实例化产品类,如:

    产品类:

  1. interface ICar{
  2.    void run();
  3. }
  4. public Class BMW  implements ICar{
  5.    public void run(){
  6.       System.println("宝马跑100码");
  7.    }
  8. }
  9. public Class LBJN implements ICar{
  10.    public void run(){
  11.       System.println("兰博基尼跑200码");
  12.    }
  13. }

  工厂类:

  1. public Class CarFactory{
  2.  
  3.    public ICar createCar(int case){
  4.        if(case == 100){
  5.           return new BMW();
  6.        }
  7.        if(case == 200){
  8.           return new LBJN();
  9.        }
  10.    }
  11. }

调用: 

  1. public Class Test{
  2.      //创建工厂实例对象
  3.      CarFactory factory = new CarFactory();
  4.      //获取产品并且执行方法
  5.      factory.createCar(200).run();
  6. }

 

2、工厂方法模式:将工厂抽象化,创建产品由其子类决定: 

产品类:

  1. interface ICar{
  2.    void run();
  3. }
  4. public Class BMW  implements ICar{
  5.    public void run(){
  6.       System.println("宝马跑100码");
  7.    }
  8. }
  9. public Class LBJN implementsICar{
  10.    public void run(){
  11.       System.println("兰博基尼跑200码");
  12.    }
  13. }

工厂类:

  1. //抽象工厂
  2. interface ICarFactory{
  3.   ICar createCar();
  4. }
  5. //创建宝马的工厂
  6. public Class BMWFactory implements ICarFactory{
  7.     ICar createCar(){
  8.       return new BMW();
  9.     }
  10. }
  11. //创建兰博基尼的工厂
  12. public Class LMJNFactory implements ICarFactory{
  13.     ICar createCar(){
  14.       return new LMJN();
  15.     }
  16. }

调用:

  1. public Class Test{
  2.      //创建抽象工厂实例对象指向宝马factory
  3.      ICarFactory factory = new BMWFactory();
  4.      //获取产品并且执行方法
  5.      factory.createCar().run();
  6. }

 

3、抽象工厂模式:抽象工厂模式中产品可能会有多个,如果产品只有一个则退化到工厂方法模式

产品类:

  1. //食品类产品族
  2. interface IFood{
  3.    void eat();
  4. }
  5. public Class SummerFood implements IFood{
  6.   void eat(){
  7.     }
  8. }
  9. public Class WinnerFood implements IFood{
  10.   void eat(){
  11.     }
  12. }
  13. //衣服类产品族
  14. interface ICloths{
  15.    void dress();
  16. }
  17. public Class SummerCloths implements ICloths{
  18.     void dress(){}
  19. }
  20. public Class WinnerCloths implements ICloths{
  21.     void dress(){}
  22. }

工厂类:

    1. interface IFactory{
    2.   IFood createFood();
    3.   ICloths createCloths();
    4. }

    5. Public Class SummerFactory(){

    6.    IFood createFood(){
    7.      return new SummerFood();
    8.    }
    9.    ICloths createCloths(){
    10.      return new SummerCloths();
    11.    }
    12. }
    13. Public Class WinnerFactory(){
    14.    IFood createFood(){
    15.      return new WinnerFood();
    16.    }
    17.   ICloths createCloths(){
    18.      return new WinnerCloths();
    19.    }
    20. }

转载于:https://www.cnblogs.com/guoliangxie/p/5283559.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109119.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea中创建一个web项目

    idea中创建一个web项目第一步:新建空的java项目在idea项目下,新建一个model,这个model就可以是一个java项目。然后会弹出一个框,选择新建java项目:点击【next】之后进入下一步,取model项目名称:写好名称和存放的路径之后,点击【finish】完成java的model项目创建:以上就是一个空的java项目的创建。第二步:在java项目的基础上创建web项目右击刚创建的java项目,添加web项目所需架构,如下图:点击【AddFrameworksSupport】之后,会弹出一个

    2022年8月29日
    3
  • git clone 后的文件找不到在哪?

    git clone 后的文件找不到在哪?经常在gihub上下载文件,但是发现这样clone下后不知道文件给放哪了?一般情况下会存放在命令行对应的目录下:win+R>cmd查看命令行地址:这个地址就是你git后的地址。如果想要改变git后的存放地址也简单,先改变命令行的地址,在gitclone文件,这里提供一个快捷的方式,在你目标文件夹下,shift+右键,选择打开powershell窗口,就会打开…

    2022年7月21日
    273
  • LightGBM 调参方法(具体操作)

    LightGBM 调参方法(具体操作)

    2021年11月21日
    59
  • dropdownlist添加列表项_云痕大数据绑定怎么删

    dropdownlist添加列表项_云痕大数据绑定怎么删 遇到问题,控件ListItem和DropDownList绑定数据库数据后selectedindex数值始终为-1,导致无法选定索引号。> 考虑解决办法:一,使用!IsPostBack二,不直接绑定,数据库数据连接到ArrayList后再用控件的>Items.Add方法添加内容DimmyConnAsSqlConnection=NewSqlConnection(“Server=loc

    2022年10月8日
    4
  • resnet34\resnet101网络结构图「建议收藏」

    resnet34\resnet101网络结构图「建议收藏」注释:7x7conv,3->64,/2表示7×7大小的卷积核,3、64表示输入输出通道,/2表示输出为原来的1/2。x2表示类似的结构还有两个。

    2022年10月6日
    4
  • java的filter方法(过滤器的功能)

    一.什么是Filter?Filter译为过滤器。 由于Servlet规范是开放的,借助于公众与开源社区的力量,Servlet规范越来越科学,功能也越来越强大。2000年,Sun公司在Servlet2.3规范中添加了Filter功能,并在Servlet2.4中对Filter进行了细节上的补充。二.运行原理:当客户端向服务器端发送一个请求时,如果有对应的过滤器进行拦截,过滤器可以改变请求的内容、或者重…

    2022年4月13日
    259

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号