zoukankan      html  css  js  c++  java
  • 简单工厂模式【java版】

    一、简单工厂模式的组成部分

         a)抽象产品: 在接口中指定了每种具体产品需要实现的方法

            具体产品: 实现接口

         b)工厂类:根据具体的参数,创建和返回相应的具体产品,由主程序直接调用

    二、代码实现

    抽象产品:Car

    package com.simpleFactory;

    public interface Car {

    public void run();

    }

    具体产品1:BENZ

    package com.simpleFactory;

    public class BENZ implements Car {

    public void run() {
    // TODO Auto-generated method stub
    System.out.println("BENZ is running!");
    }

    }

    具体产品2:BMW

    package com.simpleFactory;

    public class BMW implements Car {

    public void run() {
    // TODO Auto-generated method stub
    System.out.println("BMW is running!");
    }

    }

    工厂类:Factory

    package com.simpleFactory;

    public class Factory {

    /**
    * 静态工厂方法
    *
    */
    public static Car createCar(String carName){
    Car car = null;

    if(carName.equalsIgnoreCase("BMW")){
    car = new BMW();
    }else if(carName.equalsIgnoreCase("BENZ")){
    car = new BENZ();
    }

    return car;
    }

    }

    主函数:

    package com.simpleFactory;

    public class Main {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("开始测试简单工厂模式!");

    Car car_A=Factory.createCar("BENZ");
    car_A.run();
    Car car_B=Factory.createCar("BMW");
    car_B.run();

    }

    运行结果:

     说明:虽然简单工厂模式使用广泛,但有个十分明显的特点:每增加一个新类, 就必须

       修改“工厂类中生产产品的静态方法”,如此并不符合“开闭原则”(对扩展开放,对改变关闭)

      

        

  • 相关阅读:
    l2tp ubuntu
    my emacs fav config
    2048小游戏源码(vue自定义指令使用)
    Vue 脚手架新建项目
    vue中修改router定义的name值
    只能输入金额格式的input
    前端开发中UI问题处理
    form表单提交Ajax请求后不跳转
    小程序中代替v-html用法
    小程序中分页加载问题
  • 原文地址:https://www.cnblogs.com/edisonfeng/p/2218362.html
Copyright © 2011-2022 走看看