`
lx0088
  • 浏览: 4045 次
社区版块
存档分类
最新评论

浅谈工厂模式

阅读更多

今天在项目中用单例设计模式解决了问题,突然对设计模式大感兴趣。所以决定从最简单的模式学起走。所以看了工厂模式。发现一个问题。是不是每个模式都对应了java里面的基本知识点。单例模式利用了java的static域。工厂模式则利用了java的多态。

1. 简单工厂模式。

    a. 需要一个产品接口。所有产品实现该接口

    b. 需要一个工厂。创建一个返回产品接口类型的方法。这里就利用了多态。当调用此方法的时候就返回一个           接口类型,在工厂里面已经处理了你需要返回的实例类。

   

//第一要素 产品接口
public interface CarInterface {
	public void driver();
}

public class Bmw implements CarInterface {

	@Override
	public void driver() {
		System.out.println("this is bmw");
	}
}


public class Benz implements CarInterface {

	@Override
	public void driver() {
		System.out.println("this is benz");
	}
}

//第二要素 工厂 创建一个返回接口类型方法。根据传递的参数决定要返回的类

public class Factory {

	public CarInterface factory(String benz){
		if(benz.equals("benz")){
			return new Benz();
		}else if(benz.equals("bmw")){
			return new Bmw();
		}
		return null;
	}

}

 2. 工厂方法模式。

 

     工厂方法模式个人理解是将工厂模式进行了一层包装。从建立一个工厂实例类到建立一个工厂接口或者抽象类。不同的抽象工厂返回相同的产品接口。代码跟简单工厂模式一样,只是想工厂类变成实现一个工厂接口或者抽象类。

//抽象产品角色
public interface Moveable {
    void run();
}
 //具体产品角色
 public class Plane implements Moveable {
    @Override
    public void run() {
        System.out.println("plane....");
    }
}
 
public class Broom implements Moveable {
    @Override
    public void run() {
        System.out.println("broom.....");
    }
}
 

//抽象工厂
 public abstract class VehicleFactory {
    abstract Moveable create();
}
 
//具体工厂
 public class PlaneFactory extends VehicleFactory{
    public Moveable create() {
        return new Plane();
    }
}
 
public class BroomFactory extends VehicleFactory{
    public Moveable create() {
        return new Broom();
    }
}

 

     

3. 抽象工厂模式。

   相对来说我觉的这个模式最符合我平常的写法。

   

//抽象工厂类
 
public abstract class AbstractFactory {
    public abstract Vehicle createVehicle();
    public abstract Weapon createWeapon();
    public abstract Food createFood();
}
 
//具体工厂类,其中Food,Vehicle,Weapon是抽象类,
 
public class DefaultFactory extends AbstractFactory{
    @Override
    public Food createFood() {
        return new Apple();
    }
    @Override
    public Vehicle createVehicle() {
        return new Car();
    }
    @Override
    public Weapon createWeapon() {
        return new AK47();
    }
}

 

 

分享到:
评论

相关推荐

    浅谈PPP模式下的工程造价管理

    浅谈PPP模式下的工程造价管理

    浅谈工程管理信息化应用模式.doc

    浅谈工程管理信息化应用模式.doc

    【ZLG微信文档精选】浅谈工程师的调试法宝(三)——SWO引脚的巧妙应用.pdf

    完成这些配置后,当程序进入调试模式时,通过设置Keil工程的调试选项,选择Trace的配置,然后在调试界面中打开“Serial Windows”下的“Debug (printf) Viewer”,就能实时看到MCU通过SWO引脚发送到编译器的打印信息...

    浅谈在ppp模式下公路工程经营成本管理

    浅谈在ppp模式下公路工程经营成本管理

    【ZLG微信文档精选】浅谈工程师的调试法宝(1-5).zip

    - 半主机模式是一种让嵌入式系统与主机进行通信的调试技术,常用于模拟某些硬件功能,如I/O操作。 - 在这种模式下,嵌入式应用的部分任务依赖于主机操作系统,如文件读写、时间管理等。 - 设置半主机调试需要在...

    浅谈C#设计模式之工厂模式

    浅谈C#设计模式之工厂模式 本文主要介绍了C#设计模式中的一种重要模式:工厂模式。工厂模式是一种创造型模式,提供了一种创建对象的方式,旨在解决继承和多态性的问题。 工厂模式的定义 工厂模式是指定义一个用于...

    浅谈EPC模式的优势.doc

    EPC模式,全称为Engineering Procurement Construction,即设计-采购-施工模式,是工程总承包的一种典型形式。在EPC模式中,承包商负责项目的全过程,包括设计、设备和材料的采购以及施工,甚至包括后期的调试和试...

    设计模式浅谈种PPT学习教案.pptx

    本PPT学习教案深入浅谈了设计模式的基本概念和重要原则,同时介绍了几种创建型设计模式。 首先,设计模式产生的原因通常是因为代码的紧密耦合,如对特定类的依赖、硬件和软件平台的依赖、对象表示和实现的依赖等。...

    浅谈IPD管理模式在复杂工程项目中的应用.pdf

    【IPD管理模式】,即Integrated Project Delivery,是一种先进的综合管理模式,尤其适用于大型、群体和复杂的工程项目。IPD强调的是在项目早期就集合所有关键参与者,包括设计方、施工方、业主等,形成一个协同工作...

    浅谈电子信息工程专业人才培养模式分析与实践.pdf

    浅谈电子信息工程专业人才培养模式分析与实践.pdf

    浅谈工程量清单模式下的招投标报价.doc

    在工程招投标过程中,工程量清单计价模式是国际通用的标准做法,也是国内建筑市场日益推崇的方式。这种模式强调了投标方需对工程量清单的精确性和合理性负责,从而确保公平竞争和项目的经济效益。本文将深入探讨如何...

    浅谈工程管理信息化应用模式.docx

    【工程管理信息化应用模式】 随着信息技术的飞速发展,工程管理信息化已经成为提升建筑行业效率和质量的关键手段。本文主要探讨了工程管理信息化应用的现状及其存在的问题,并提出了相应的应用模式和改进措施。 **...

    软件体系结构Builder模式浅谈

    在软件工程中,当需要创建的对象具有多个可变组成部分时,Builder模式能够帮助我们构造这些对象,同时保持构建算法的稳定,即使对象的各个部分在不断变化。 Builder模式通常由四个主要角色组成: 1. 抽象Builder...

    浅谈EPC工程总承包管理模式.docx

    【EPC工程总承包管理模式概述】 EPC(Engineering-Procurement-Construction)工程总承包管理模式是一种集设计、采购、施工于一体的工程管理方式,旨在解决设计、采购、施工相互制约的问题,提高项目管理水平,确保...

    设计模式浅谈24种.ppt

    在《设计模式浅谈24种》中,主要讨论了24种经典的GOF设计模式,这些模式被分为三大类:创建型、结构型和行为型。 创建型模式主要关注对象的创建,包括以下几个核心模式: 1. **Abstract Factory**(抽象工厂)模式...

    浅谈设计模式在Android代码重构中的应用.pdf

    文章通过具体的Android应用开发案例,展示了如何运用设计模式进行代码重构,例如,通过使用单例模式管理网络请求,使用工厂模式简化对象创建,使用观察者模式实现数据的实时更新等。 5. 提升信息素养的重要性 在...

    【ZLG微信文档精选】浅谈工程师的调试法宝(二)——半主机的巧妙应用.pdf

    接着,需要对工程进行特定配置,以启用半主机模式。配置完成后,进入调试模式,并打开TerminalI/O窗口。运行程序后,可以看到输出信息和用户输入的字符。 尽管半主机技术在某些方面非常有用,但它存在一些局限性,...

Global site tag (gtag.js) - Google Analytics