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();

    }

    运行结果:

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

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

      

        

  • 相关阅读:
    static-keys.txt 翻译
    sqlserver sp_executesql 返回值
    socket上传文件
    threadingSocket 服务器端可以同时接受多个客户端的访问
    python ftp上传
    Python sys模块
    linux系统相关
    下载论文,电子书籍(中英文),专利,数据库和课件
    如何设计一个合理、灵活的深度学习训练框架
    使用小米电视的第一天
  • 原文地址:https://www.cnblogs.com/edisonfeng/p/2218362.html
Copyright © 2011-2022 走看看