工厂方法模式和简单工厂模式在结构上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创建行为继承下来,从而可以成为多个简单工厂模式的综合,进而推广了简单工厂模式。
此模式涉及到抽象工厂角色(汽车厂),具体工厂角色(具体的汽车车间),抽象产品角色(汽车)以及具体产品角色(私车,公交巴士)。
package com.dz.factory02;
interface Car{
public void start();
public void stop();
}
class Benz implements Car{
public void start(){
System.out.println("Benz开动了。。。。");
}
public void stop(){
System.out.println("Benz停车了。。。");
}
}
class Ford implements Car{
public void start(){
System.out.println("Ford开动了。。。。");
}
public void stop(){
System.out.println("Ford停车了。。。");
}
}
class BigBus implements Car{
public void start(){
System.out.println("大巴开车了。。。。");
}
public void stop(){
System.out.println("大巴停车了。。。。");
}
}
class MiniBus implements Car{
public void start(){
System.out.println("小巴开车了。。。。");
}
public void stop(){
System.out.println("小巴停车了。。。。");
}
}
interface AbstractFactory{
//抽象工厂
}
class CarFactory implements AbstractFactory{
public Car getCar(String type){
Car c=null;
try {
c=(Car)Class.forName("org.jzkangta.factorydemo02."+type).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return c;
}
}
class BusFactory implements AbstractFactory{
public Car getBus(String type){
Car c=null;
try {
c=(Car)Class.forName("org.jzkangta.factorydemo02."+type).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return c;
}
}
public class Factorydemo02 {
public static void main(String[] args) {
//CarFactory cf=new CarFactory();
BusFactory bf=new BusFactory();
Car c=null;
//c=cf.getCar("Benz");
c=bf.getBus("BigBus");
c.start();
c.stop();
}
}
分享到:
相关推荐
由于浪曦关于struts2讲解的视频中的源代码没有,故本人细心整理、编译成功后将和视频中所讲源代码上传供大家学习。 注意了!!由于上传的大小限制,故将源代码每讲的代码分别上传,聪明的你应该可可以在csdn上搜到...
浪曦OA是一款企业级的办公自动化系统,而“风中叶”可能是该系统的某一版本或者特色功能的代称。在给定的压缩包文件“lib1”中,我们可以推测这包含的是该OA系统中用于“lib”(库)部分的源代码,特别地,这个版本...
浪曦OA是一款企业级的办公自动化系统,而“风中叶”可能是该系统的某一版本或者特色功能的代称。在这个源码包“浪曦OA-风中叶源码(里面的JS代码本人已改为JQUERY实现)lib2”中,重点是JavaScript代码已经被转化为...
浪曦OA是一款企业级的办公自动化系统,风中叶源码是其开发版本之一,而这个源码包特别之处在于其内部的JavaScript代码已经被优化,改为了基于jQuery库的实现。这种修改通常是为了提高代码的可读性、可维护性和执行...
创建型模式如单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory),主要关注对象的创建;结构型模式如适配器(Adapter)、装饰器(Decorator)和代理(Proxy),关注如何组合对象以形成更...
教程名称:浪曦Struts2系列视频教程课程目录:【】1 Struts2入门与配置【】10 Struts2的核心 拦截器【】11 Struts2的核心 拦截器续【】12 Struts2的文件上传和下载【】13 Struts2的文件上传和下载续【】14 Struts2的...
浪曦 - JDK5.0新特性.part2
浪曦 - JDK5.0新特性.part3
浪曦 - JDK5.0新特性.part5.rar
浪曦 - JDK5.0新特性.part4.rar
【浪曦全部视频的下载地址】提供了广泛的编程教学资源,涵盖了多个编程技术和平台,包括ASP.Net AJAX、J2EE和VC++.NET等。这些视频教程是针对2007年4月9日之前的版本,因此可能不包含最新的技术更新,但它们依然可以...
【标题】"浪曦hibernate视频抓图 struts2 hibernate3 抓图" 涉及到的是两个核心的Java Web开发框架——Struts2和Hibernate3,以及可能与之相关的教学或演示过程的截图。Struts2是一个强大的MVC(Model-View-...
【浪曦投票管理系统部分源码】是一个基于Struts1、Hibernate和Spring的Web应用程序,它展示了如何在这三个框架之间进行集成以实现一个完整的业务逻辑处理系统。Struts1是MVC(模型-视图-控制器)设计模式的一个实现...
为了解决这个问题,可以考虑使用抽象工厂模式或者工厂方法模式,使工厂类更加灵活。 在学习这两种模式时,理解其背后的意图和应用场景至关重要。通过实践和案例分析,可以更好地掌握它们的用法和优缺点,从而在实际...
7. **基础组件使用**:讲解浪曦OA系统中常用的组件,如登录认证、权限管理等,让学习者了解这些组件的工作原理和使用方法。 "教程说明.txt"文件可能是详细的教学指南,包含每讲的学习目标、内容概要以及课后练习,...
[浪曦原创]JAVA设计模式.part3.rar
浪曦原创]JAVA设计模式.part1
在"浪曦原创"的讲解中,可能详细讲述了如何在Java中应用模板方法模式,以及其在实际开发中的价值和意义。 总的来说,模板方法模式是软件设计中一种重要的设计模式,它帮助我们在处理具有固定步骤但细节可变的算法时...
【浪曦商城网页参考模板】是一个专为电商网站设计的网页模板,由张波老师推荐并应用于浪曦商城项目。这个模板以蓝色为主色调,营造出清新、专业的购物环境,适用于各类在线销售平台。未修改的原始模板为开发者提供了...
浪曦图库系统的实现涉及到ASP.NET MVC或Web Forms架构、ADO.NET数据访问层、CSS和JavaScript前端交互等多个技术领域。对于学习和实践ASP.NET开发,尤其是动态HTML页面生成,这是一个很好的实际案例。通过研究和分析...