`
lcwyiyun
  • 浏览: 11819 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

第一天 工厂模式之简单工厂模式

阅读更多
首先定义一个接口
public interface Car {
	public void drive();
}

两个实现类
public class BMWCar implements Car{
	public void drive() {
		System.out.println("驾驶了一辆宝马汽车");
	}
}

public class QQCar implements Car{
	public void drive() {
		System.out.println("驾驶了一辆QQ汽车");
	}
}

一个静态工厂,因为是静态的方法,所以又简单工厂模式又称为静态工厂模式。
public class CarFactory {
	public static Car factory(String witch) throws BadCarException {
		if(witch.equalsIgnoreCase("QQCar")) {
			return new QQCar();	
		} else if(witch.equalsIgnoreCase("BMWCar")) {
			return new BMWCar();	
		} else {
			throw new BadCarException(witch);
		}
	}
}

public class BadCarException extends Exception {
	public BadCarException(String msg) {
		super(msg);
	}
}

测试类
public class Client {
	public static void main(String[] args) {
		try {
			Car bmwCar = CarFactory.factory("BMWCar");
			Car qqCar = CarFactory.factory("QQCar");
			bmwCar.drive();
			qqCar.drive();
		} catch (BadCarException e) {
			e.printStackTrace();
		}
	}
}
分享到:
评论

相关推荐

    应用了设计模式之简单工厂模式的计算器

    完成了,但感觉这也没啥特别的,程序界面黑布隆冬的,内部结构也是最最平常的面向对象,于是我应用了《大话设计模式》这本书中的第一个模式——简单工厂模式,看上去还不错。界面的话,也就是输出的语句变了,system...

    C++设计模式第一天

    "C++设计模式第一天"的教程旨在为学习者提供对设计模式的基础认识,从而踏上C++进阶之旅。本课程涵盖了设计模式的核心概念,以及如何在实际项目中应用这些模式。 设计模式是经过时间和实践验证的解决方案,用于解决...

    设计模式第一天学习内容

    简单工厂模式提供一个工厂类来创建对象,降低了客户端与具体产品类之间的耦合。 工厂方法模式将对象的创建委托给子类决定,使得系统更具扩展性。 抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,无需指定...

    Spring框架是在2003年兴起的一门轻量级的JAVAEE框架技术 Spring框架学习资料第一天

    Spring框架学习资料第一天 一、Spring框架简介 * Spring框架是在2003年兴起的一门轻量级的JAVAEE框架技术 * Spring框架的诞生目的是致力于全面的简化JAVAEE企业级应用的开发 * Spring框架采用了很多的设计模式:...

    何红辉关爱民-Android源码设计模式解析与实战(带书签第2版).pdf

    本书的主要内容为:优化代码的第一步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器...

    netcore,依赖注入、工厂数据库连接模式、linq、EF

    本项目包为vue项目,从vue小白到高手,从一个内容管理网站开始实战开发第八天的项目包,项目包中使用的是netcore实现了工厂模式数据库生产,依赖注入、linq、EF等技术。项目组要是提供vue项目从小白到高手的课程学习...

    spring培训笔记第一天

    ### Spring培训笔记第一天:深入理解Spring框架的核心概念与实践 #### Spring框架简介 Spring框架是企业级应用开发中广泛使用的轻量级框架,它通过提供一系列的开发模式和最佳实践来简化Java应用的开发过程。...

    何红辉关爱民-Android源码设计模式解析与实战(带书签高清第2版).pdf

    本书的主要内容为:优化代码的第一步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器...

    23设计模式简讲

    - **场景解析**:在与MM相处的过程中,可以记录下一些重要的时刻,例如第一次见面的日子、第一次约会的地点等。这些记录就像是一个个备忘录,当需要回忆时,就可以通过它们来重新体验那些美好的瞬间。 - **模式...

    springmvc第一天课堂笔记

    - **第一步**:用户发起请求到达前端控制器DispatcherServlet。 - **第二步**:DispatcherServlet通过处理器映射器HandlerMapping查找合适的处理器(Controller)。 - **第三步**:处理器映射器返回一个执行链...

    SSM框架的学习与应用-Java EE企业级应用开发学习记录-(第六天)初识Spring框架

    本资源是一篇关于学习和应用SSM框架(Spring、SpringMVC、MyBatis)的学习记录系列文章中的第六天内容,主题为初识Spring框架。 在这一部分中,你将了解到Spring框架的基本概念和使用方法,并通过实例探讨了Spring ...

    设计模式-可复用面向对象软件的基础

    2. **工厂模式**:提供一个接口用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类。C#中的抽象工厂和简单工厂可以用来动态地创建对象,增加了代码的灵活性。 3. **建造者模式**:将一个复杂对象的构建...

    北京中科信软VS.NET设计模式与软件架构设计培训1

    第一天的课程内容主要介绍了解决方案设计理念,包括软件设计方法的比较,MSF(Microsoft Solution Framework)流程概述,以及软件架构设计的基本思想。课程中还提到了微软服务器产品和桌面产品的集成特性,强调了...

    设计模式例题

    同时,结合工厂模式和反射技术来动态地创建装饰器对象,进一步提高系统的灵活性和可扩展性。 综上所述,通过合理地选择和应用设计模式,可以有效提升软件系统的质量和可维护性,满足不断变化的业务需求。

    31重构 模式与重构 MVC实例

    例如,使用工厂模式改进对象创建过程,或者利用观察者模式实现松耦合的事件处理。此外,书中可能还介绍了如何在重构过程中避免破坏现有的功能,确保软件的稳定。 提到.MVC(Model-View-Controller)框架,它是.NET...

    暑假社会实践工厂打工心得.doc

    第一天,我被分配到受话器组,主要任务是处理产品的次品和废品,以及进行一些杂务工作。工资按日计算,多劳多得。然而,工作的艰辛超乎我的想象,第一天仅剪了900个次品,得到的报酬只有22.5元,这让我意识到这份...

    流程图,失效模式分析,控制计划.pptx

    在PFD培训中,第一天的内容涵盖了PFD的基础理论和实践,包括课堂讲解和实践活动,以帮助学员理解和绘制流程图,查找过程中的细节问题。 失效模式及效应分析(Failure Mode and Effects Analysis, FMEA)是一种前瞻...

    街景工厂(Street Factory) - 用于三维模型生产的先进处理系统

    例如,在中国的保定市项目中,街景工厂利用800张图像,在一个GPU上仅用1.5天的时间就完成了三维模型的处理工作,充分展示了其高效性和实用性。 #### 四、总结 街景工厂(Street Factory)作为一款先进的三维模型生产...

    Springmvc第二天课程文档

    1. **一对一映射**:例如用户与订单的关系,一个用户可以有多个订单,而一个订单只能属于一个用户。 2. **一对多映射**:例如订单与订单详情的关系,一个订单可以包含多个商品项。 3. **多对多映射**:例如商品与...

    自制PHP框架之设计模式

    在工厂模式中,通常会有一个工厂类,它提供一个创建对象的接口,但让子类来决定实例化哪一个类。 ```php class ProductFactory { public static function createProduct($type) { if ($type == 'A') { return ...

Global site tag (gtag.js) - Google Analytics