• 工厂方法


    2、工厂模式关键点在工厂类里实现了car 的接口。

    CAR_CALSS_AUDI car_audi_imp  = new CAR_CALSS_AUDI();

    工厂方法模式应用场景举例

    比如在玩“极品飞车”这款游戏,晕了吧,我喜欢极品飞车:),在玩这款游戏时,游戏者可以选择从不同品牌来选择赛车,那么这个“品牌”其实也就是工厂,每个工厂生产的赛车都不一样,这就是典型的工厂方法的应用场景。

    工厂方法模式解释

    类型:创建模式

    定义一个用于创建对象的接口,让其子类来决定实例化哪一个类(产品),工厂方法使一个类的创建延迟到其子类中。

    工厂方法模式UML图

    工厂方法模式-JAVA代码实现

    新建车的接口:

    public interface CAR {
           public void start();
           public void stop();
        }

    新建1个汽车信息的基类:

     

    public class CAR_CALSS implements CAR {

     private String carname;
     int speed;
     
     public String getName(){
      return carname;
     }
     public void setName(String carname){
      this.carname = carname;
     }
     
     public int getSpeed() {
      return speed;
     }
     public void setSpeed(int speed) {
      this.speed = speed;
     }
     
     @Override
     public void start() {
      // TODO Auto-generated method stub

    }

    @Override
     public void stop() {
      // TODO Auto-generated method stub

    }

    }

    新建奥迪汽车实现类:
    public class CAR_CALSS_AUDI extends CAR_CALSS {

    public void start(){
      System.out.println("我是奥迪;"+this.getName()+"启动了,速度为"+this.getSpeed());
     }
     
     public void stop(){
      System.out.println("我是奥迪;"+this.getName()+"停止了");
     }
    }

    新建大众汽车实现类:

     

    public class CAR_CALSS_3W extends CAR_CALSS {
     public void start(){
      System.out.println(this.getName()+"启动了,速度为"+this.getSpeed());
     }
     
     public void stop(){
      System.out.println(this.getName()+"停止了");
     }
    }

     

    新建一个汽车工厂接口:

     

    public interface CAR_FACTORY {
      public CAR create_car();
    }

     新建一个创建奥迪车的汽车工厂实现类:

     

    public class CAR_FACTORY_AUDI implements CAR_FACTORY {

    @Override
     public CAR create_car() {
      CAR_CALSS_AUDI car_audi_imp  = new CAR_CALSS_AUDI();
      car_audi_imp.setName("奥迪A6");
      car_audi_imp.setSpeed(200);
      return car_audi_imp;
     }

    }

     

    新建一个创建大众车的汽车工厂实现类:

     

    public class CAR_FACTORY_3W implements CAR_FACTORY {

    @Override
     public CAR create_car() {
      CAR_CALSS_3W car_3w_imp  = new CAR_CALSS_3W();
      car_3w_imp.setName("上海大众passt");
      car_3w_imp.setSpeed(200);
      return car_3w_imp;
     
     }

    }

     

    客户端运行程序代码:

     

    public class RUN_MAIN {


     public static void main(String[] args) {
      // TODO Auto-generated method stub
          CAR_FACTORY_AUDI factory_audi = new CAR_FACTORY_AUDI();
          CAR  car_ref  = factory_audi.create_car();
          car_ref.start();
          car_ref.stop();
     }

    }

     

     

    通过使用工厂方法模式就可以将对象的创建延迟到子类进行实例化,而且每个工厂创建不同的品牌的汽车,每个汽车的功能都有自己“专利”的实现,这样可以将不同“品牌”的“汽车”的创建进行分类,有利于对象创建的清晰性。创建不同的汽车只需要改动这句代码就可以了:

     CAR_FACTORY_AUDI factory_audi = new CAR_FACTORY_AUDI();

  • 相关阅读:
    JavaScript学习-自定义对象/
    网站特效:欢迎窗口/发表评论
    javacript中的事件
    DOM / DOM操作表格
    如何设置文本不换行省略号显示等CSS常用文本属性
    从零开始的H5生活
    Spring手动提交事务
    java基础学习之接口
    java基础学习之抽象类
    java基础学习之final关键字
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/4303814.html
Copyright © 2020-2023  润新知