工厂模式_简单工厂模式

一、工厂模式作用
  实现了创建者和调用者的分离。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。

二、工厂模式的核心本质
  实例化对象,用工厂方法代替new操作。

三、工厂模式的详细分类

  3.1 简单工厂模式

    简单工厂模式也叫静态工厂模式,就是工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。对于增加新产品(新功能)必须要修改源程序!
    简单工厂模式的两种实现方式:

    3.1.1 第一种方式

    车类型接口:  

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:车类型接口
 * @author aeon(qq:1584875179)
 */
public interface Car {
    void run();
}

    宝马类:

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:宝马类
 * @author aeon(qq:1584875179)
 *
 */
public class BMW implements Car {

    @Override
    public void run() {
        System.out.println("宝马在跑!");
    }

}

    比亚迪类:  

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:比亚迪类
 * @author aeon(qq:1584875179)
 *
 */
public class Byd implements Car {

    @Override
    public void run() {
        System.out.println("比亚迪在跑!");
    }

}

    生产车的工厂类:  

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:生产车的工厂类
 * @author aeon(qq:1584875179)
 *
 */
public class CarFactory {
    public static Car creatCar(String type){
        if("bmw".equals(type)){
            return new BMW();
        }else if("byd".equals(type)){
            return new Byd();
        }else{
            return null;
        }
    }
}

    测试在没有工厂模式下的调用过程:  

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:测试在没有工厂模式下的调用过程
 * @author aeon(qq:1584875179)
 *
 */
public class TestNoFactory {

    public static void main(String[] args) {
        Car car1=new BMW();
        Car car2=new Byd();
        car1.run();
        car2.run();
    }
}

    测试结果截图如下:

    

    测试简单工厂模式下的调用类:  

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:测试简单工厂模式
 * @author aeon(qq:1584875179)
 *
 */
public class TestEasyFactory {

    public static void main(String[] args) {
        Car car1=CarFactory.creatCar("bmw");
        Car car2=CarFactory.creatCar("byd");
        car1.run();
        car2.run();
    }

}

    测试结果如下:

    

    3.1.2 第二种方式(工厂类写法)      

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:简单工厂模式的第二种写法
 * @author aeon(qq:1584875179)
 *
 */
public class CarFactory2 {
    public static Car createBMW(){
        return new BMW();
    }
    public static Car createByd(){
        return new Byd();
    }
}

    测试类:    

package edu.aeon.model.factory.easyfactory;
/**
 * [说明]:测试简单工厂模式第二种写法
 * @author aeon(qq:1584875179)
 *
 */
public class TestEasyFactory2 {

    public static void main(String[] args) {
        Car car1=CarFactory2.createBMW();
        Car car2=CarFactory2.createByd();
        car1.run();
        car2.run();
    }

}

    测试结果截图如下:

    

  3.2 工厂方法模式

  3.3抽象工厂模式

原文地址:https://www.cnblogs.com/aeon/p/10301657.html

时间: 2024-10-14 00:37:24

工厂模式_简单工厂模式的相关文章

设计模式_创建型模式_简单工厂模式

转载自:http://blog.csdn.net/lovelion  作者:刘伟 简单工厂模式并不属于GoF 23个经典设计模式,但通常将它作为学习其他工厂模式的基础,它的设计思想很简单,其基本流程如下:        首先将需要创建的各种不同对象(例如各种不同的Chart对象)的相关代码封装到不同的类中,这些类称为具体产品类, 而将它们公共的代码进行抽象和提取后封装在一个抽象产品类中,每一个具体产品类都是抽象产品类的子类: 然后提供一个工厂类用于创建各种产品,在工厂类中提供一个创建产品的工厂方

设计模式_创建型模式_简单工厂模式_案例

使用简单工厂模式设计一个可以创建不同几何形状(如圆形.方形和三角形等)的绘图工具, 每个几何图形都具有绘制draw()和擦除erase()两个方法, 要求在绘制不支持的几何图形时,提示一个UnSupportedShapeException. 结构图如下: AbstractDrawTools  所有绘图工具的基类,是个抽象工厂类,抽取了三个绘图工具的共有方法Draw() Erase()当成抽象方法 这里简化了工厂类,把工厂类中的创建对象的静态方法移植到这个类中. CaspuleTool  胶囊绘图

大话设计模式_简单工厂模式(Java代码)

简单的描述:一个父类.多个子类,实例化那个子类由一个单独的工厂类来进行 图片摘自大话设计模式: 运算类: 1 package com.longsheng.simpleFactory; 2 3 public class Calculate { 4 5 private double firstNum; 6 private double secondNum; 7 8 public double getFirstNum() { 9 return firstNum; 10 } 11 12 public v

设计模式(四)_简单工厂模式

废话不多说,继续学习设计模式的简单工厂模式 简单工厂模式是类的创建模式,又叫静态工厂方法模式.简单工厂模式是由一个工厂对象决定创建哪种产品类实例 使用场景 假如一个应用系统有多种登录方式,比如:用户密码登录.第三方账号登录.那自然建立一个各种登录方式都使用的接口. 下面我针对登录场景,画了uml图 具体代码 1) 接口 public interface Login { public boolean verify(String name,String password); } 2)登录方式的实现

战略模式和简单工厂

策略算法级: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace StrategyDemo { abstract class Strategy { public abstract void BillInterface(); } class ConcreteStrategyA : Strategy { public override void BillInte

java设计模式 -------- 创建模式 之 简单工厂模式

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 工厂模式是最常用的模式,因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a = new A(),工厂模式也是用来创建用来创建实例对象的,所以以后new时要多个心眼,是否可以考虑使用工厂模式. 简单工厂模式又可以分成三种模式: 1) 普通简单工厂模式 2) 多方法简单工厂模式 3) 多静态方法简单工厂模式 普通简单工厂模式: 举例:(简单的

设计模式笔记——策略模式VS简单工厂模式

策略模式VS简单工厂模式   策略模式(Strategy)它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户. 1.组成 -抽象策略角色: 策略类,通常由一个接口或者抽象类实现. -具体策略角色:包装了相关的算法和行为. -环境角色:持有一个策略类的引用,最终给客户端调用. 2.应用场景 - 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为. -需要在不同情况下使用不同的策略(算法),或者策略还可能在未来

设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)

原文地址:http://blog.chinaunix.net/uid-25958655-id-4243289.html 简单工厂模式 当需要加法类的时候,调用工厂类的CreateOperate(),要指定制造的Product 例如在大话设计模式P11给的运算工厂例子: public static Operation createOperate(string operate) { Operation oper = null; 12 switch (operate) { case "+":

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

一.简介 工厂模式主要是为创建对象提供接口,让子类决定实例化哪个类.按照<Java与模式>可以分为: 1.简单工厂模式 2.工厂方法模式 3.抽象工厂模式 二.简单工厂 适用于业务简单的情况:小项目或具体产品扩展很少的情况. 它由以下三种角色组成: 具体工厂类 抽象产品类 具体产品来 UML类图关系如下: 三.工厂方法 概念:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法将一个类的实例化延迟到其子类. 有以下角色组成: 抽象工厂类 具体工厂类 抽象产品类 具体产品类 UML类图