一、简单工厂模式
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
public interface Sample{
}
Public class SampleA implements Sample{
}
Public class SampleB implements Sample{
}
public class Factory{
public static Sample creator(int which){ //getClass 产生Sample 一般可使用动态类装载装入类。
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
}
}
应用情景:
1、工厂负责筹建的对象比较少。
2、客户只知道传入工厂的参数,对于如何创建对象(逻辑)不关心。
二 、工厂方法(Factory Method)模式
工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。
//定义水果接口
public interface Fruit {
public String createFruit();
}
//水果1
public class Apple implements Fruit {
@Override
public String createFruit() {
return "Apple";
}
}
//水果2
public class Banand implements Fruit {
@Override
public String createFruit() {
return "Banand";
}
}
//定义水果工厂接口
public interface FruitFactory {
public Fruit factory();
}
//苹果工厂类
public class AppleFactory implements FruitFactory {
@Override
public Fruit factory() {
Fruit f= new Apple();
return f;
}
}
//香蕉工厂类
public class BanandFactory implements FruitFactory {
@Override
public Fruit factory() {
Fruit f= new Banand();
return f;
}
}
//定义一个测试类
public class FactoryTest {
private FruitFactory f1=new AppleFactory();
private FruitFactory f2=new BanandFactory();
public void test(){
System.out.println("AppleFactory生产"+f1.factory().createFruit());
System.out.println("BanandFactory生产"+f2.factory().createFruit());
}
public static void main(String[] args) {
new FactoryTest().test();
}
}
//打印结果如下:
AppleFactory生产Apple
BanandFactory生产Banand
抽象工厂模式
public interface Cpu
{
}
public interface Ram
{
}
//四个具体产品
public class PcCpu implements Cpu
{
}
public class MacCpu implements Cpu
{
}
public class PcRam implements Ram
{
}
public class MacRam implements Ram
{
}
//抽象工厂角色
public interface ComputerProducer
{
Cpu createCpu();
Ram createRam();
}
//两个具体工厂角色
public class PcProducer implements ComputerProducer
{
public Cpu createCpu()
{
return new PcCpu();
}
public Ram createRam()
{
return new PcRam();
}
}
public class MacProducer implements ComputerProducer
{
[1] public Cpu createCpu()
{
return new MacCpu();
}
public Ram createRam()
{
return new MacRam();
}
}
一般情况下,有多少个抽象产品,就有多少个工厂方法。(比如再增加一个PC与MAC不同的其他计算机配件,例如显卡)。
三,抽象工厂
- 大小: 17.1 KB
- 大小: 25.6 KB
- 大小: 5.8 KB
- 大小: 100.2 KB
分享到:
相关推荐
通过运行和分析这个Demo程序,你可以深入理解简单工厂和工厂方法在实际应用中的差异,以及如何根据需求选择合适的设计模式。同时,也可以学习到如何在C++环境中有效地实现这两种模式,提升你的编程技能和设计思维。...
工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...
抽象工厂模式可以保证在任何环境下都能正确地创建对象,提高了代码的可移植性,但其缺点是增加新平台时,需要增加新的抽象工厂和一系列具体工厂,这可能会导致系统结构变得复杂。 对比这三种工厂模式: 1. **简单...
在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...
总结起来,简单工厂和工厂方法都是为了封装对象的创建过程,但它们在灵活性和扩展性上有所差异。简单工厂更适合快速实现,而工厂方法则为未来的扩展留有余地。在实际项目开发中,根据需求选择合适的设计模式是非常...
在软件设计模式中,"简单工厂"和"抽象工厂"是两种常见的创建型设计模式,它们主要用于对象的创建。这两种模式都是为了将对象的创建过程封装起来,使得客户端代码无需关心具体的实现细节,只需调用工厂提供的接口即可...
工厂方法、简单工厂和抽象工厂是创建型设计模式的三种不同形式,它们都关注于对象的创建过程,但各有其特点和适用场景。 1. **工厂方法(Factory Method)**: 工厂方法模式定义了一个创建对象的接口,但让子类...
在软件设计模式中,"抽象工厂"、"工厂方法"和"简单工厂"都是创建型设计模式,它们都用于封装对象的创建过程,提供了一种间接的途径来创建对象,从而使得代码更加灵活,易于扩展。下面将详细介绍这三个工厂模式。 ##...
工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...
在Java等面向对象编程语言中,我们可以利用抽象类和抽象方法来实现简单工厂模式。 首先,我们需要理解什么是抽象方法。在面向对象编程中,抽象方法是一种没有具体实现的方法,它只有声明,没有具体的操作。这样的...
本文将深入探讨三种工厂模式:简单工厂模式、工厂方法模式以及抽象工厂模式,并结合源码分析其应用场景和优缺点。 1. 简单工厂模式 简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的...
总结,本项目通过工厂方法模式重构简易计算器,展示了这种模式在处理多类型对象创建问题时的灵活性和可扩展性。这种方法使得代码结构清晰,易于维护,同时也为添加新功能提供了便利。对于学习设计模式和实践面向对象...
工厂模式是C++软件开发中非常实用的设计模式之一,通过合理运用简单工厂、工厂方法和抽象工厂,可以有效地提升软件的结构清晰度、可维护性和扩展性。理解并掌握这些模式对于构建高质量、可扩展的软件系统至关重要。...
这样做的好处在于,工厂方法模式使得系统的扩展变得非常灵活,当需要添加新的产品类型时,只需要增加新的产品类和对应的工厂类即可,无须修改已有的代码。 在描述中提到了“反射机制”,这是Java等面向对象语言中的...
今天我们将深入探讨三种主要的设计模式:简单工厂、工厂方法和抽象工厂。 ### 简单工厂模式 简单工厂模式是一种创建型设计模式,它提供了一个静态方法来创建对象,而无需暴露创建逻辑。这个静态方法根据输入参数来...
- `factory2`、`factory3`、`factory1` 这些文件名可能是实现工厂模式的Java源代码,分别代表了不同级别的工厂类,如简单工厂、工厂方法和抽象工厂的实现。通过查看这些源代码,可以学习到如何在实际项目中应用这些...
简单工厂模式和工厂方法模式是软件设计模式中的两种创建型模式,它们在对象创建过程中扮演着重要角色,尤其是在处理类的实例化时。这两种模式都通过提供一个专门的“工厂”类来创建对象,以此来隐藏具体的对象创建...
在这个例子中,我们讨论的是如何使用工厂方法模式(Factory Method Pattern)实现一个简易计算器。工厂方法模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个工厂接口或者抽象类...
同时,工厂方法模式也可以避免简单工厂模式的缺点,即当有新产品要加入到系统中时,必须对工厂类进行修改,以加入必要的处理逻辑。 工厂方法模式适合在如下场合中运用: * 当无法得知必须创建的对象属于哪个类的...
简单工厂模式适用于产品种类较少且相对固定的情况,而工厂方法和抽象工厂模式则更适合需要频繁扩展产品线或者有多种产品族的场景。 总的来说,设计模式是解决特定问题的模板,它们提供了一种在面对变化时保持系统...