`
wangchao_17915566
  • 浏览: 169512 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

学习工厂模式

阅读更多

今天了解了工厂模式,总结下:

      首先是简单工厂模式,大家在开发中经常用到,感觉就是在类里面增加一些静态方法,这个类就是工厂类,以后调用这些方法时不用实例化此类。

一个例子,动物有吃,喝的功能,写个动物接口。

public interface Animal {

	public void eat();
	
	public void drink();
}

 

猫,狗继承动物,就有了这两个功能。

public class Cat implements Animal {
	public void drink() {	

	}
	public void eat() {
	
	}
}

 

public class Dog implements Animal {
	public void drink() {		
	}

	public void eat() {

	}
}

 宠物店可以提供这两种动物

public class PetShop {
	public static Dog dogAdopt(){
		return new Dog();
	};	
	public static Cat catAdopt(){
		return new Cat();
	};
}

 这个类就是静态工厂类。

人们可以通过此类进行领养动物。

public class People {

	private Cat whitecat;
	private Cat blackcat;
	
	public void test(){
		this.whitecat=PetShop.catAdopt();
		this.blackcat=PetShop.catAdopt();
		
		whitecat.drink();
		blackcat.eat();
	}
}

 可以领养白猫,或者黑猫,并且也具有吃喝的功能。

此例说了下静态工厂类。

如果宠物店还需要增加动物品种怎么办,就要在静态工厂类增加动物品种,如老虎。这样就不能面向接口编程

 

工厂方法模式就可以改变这些。

修改PetShop.java

public interface PetShop {

	public Animal animalAdopt();
	
}

 增加的品种都可以继承这个类

public class DogAdopt implements PetShop {
               //返回狗的实例,领养狗
	public Animal animalAdopt() {

		return new Dog();
	}

}

 

public class CatAdopt implements PetShop {
//返回猫的实例领养猫
	public Animal animalAdopt() {		
		return new Cat();
	}

}

 

这里也可以增加老虎的实例,进行领养。只将接口(宠物点)暴露给用户。至于增加什么品种,用户不知道。用户只用知道自己想要的。

public class People {
	private Cat whitecat;
	private Cat blackcat;	
	public void test(){
		CatAdopt a = new CatAdopt();
		this.whitecat= (Cat) a.animalAdopt();
		this.blackcat=(Cat) a.animalAdopt();		
		whitecat.drink();
		blackcat.eat();
	}
}

 

写这些只为学习,有理解错误的地方请批评

分享到:
评论

相关推荐

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

    通过学习和理解这三种工厂模式,开发者可以更好地组织代码,降低模块间的耦合,提高软件的可维护性和可扩展性。在实际开发过程中,根据项目需求和产品结构选择合适的工厂模式,能够有效地提高代码质量。

    java工厂模式经典学习书籍(很详细的)

    学习工厂模式,你需要理解以下几个关键概念: 1. **工厂类**:这是创建对象的中心,负责根据需要生产出对应的实例。 2. **产品接口/抽象类**:定义了所有产品类共同的行为,产品实例必须实现这些接口或继承自这个...

    工厂模式 经典实战案例 一看就能学会工厂模式

    学习工厂模式有助于理解面向对象设计原则,如单一职责原则(SRP)、开闭原则(OCP)等,以及如何在实际项目中运用这些原则来提高代码的可维护性和可扩展性。工厂模式不仅可以用于C#,在Java、Python等其他面向对象...

    简单工厂模式-工厂方法模式-抽象工厂模式

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    工厂模式代码生成器

    通过这个项目,开发者不仅可以学习工厂模式的基本概念和应用,还能掌握代码生成工具的开发,包括模板引擎的使用、代码解析和生成技术。同时,这也是一种实践面向设计模式编程的实例,对于提升软件设计能力,理解和...

    工厂模式C#学习实例

    工厂模式是一种设计模式,它是创建型模式的一种,主要用于在代码中生成对象。在C#中,工厂模式的应用广泛,能够帮助...通过分析提供的压缩包文件,可以深入学习工厂模式的C#实现,以及如何结合反射进行动态对象创建。

    简单工厂模式、工厂模式、抽象工厂模式案例(C++实现)

    这些工厂模式的实现文件("工厂模式")可以作为学习和理解设计模式的实例。通过阅读和分析这些代码,你可以深入理解如何在C++中应用这些模式,以及它们在实际项目中的价值。此外,这些模式不仅限于C++,在Java、...

    设计模式单例模式和工厂模式综合应用

    总的来说,这个项目为学习和理解单例模式和工厂模式在实际开发中的应用提供了一个很好的示例。通过结合这两种模式,可以构建出既保证了对象唯一性,又能灵活应对不同产品创建需求的系统。对于Java开发者来说,深入...

    设计模式工厂方法模式PPT学习教案.pptx

    "设计模式工厂方法模式PPT学习教案" 本学习教案旨在讲解设计模式中的工厂方法模式(Factory Method),通过学习本教案,学生将掌握工厂方法模式的定义、结构、实例、分析和应用。 模式动机与定义 在软件设计中,...

    机器学习与模式识别.pdf

    为了解决这些问题,需要选择合适的机器学习算法和模型,并对数据进行预处理和特征工程。 8. 机器学习的优点:机器学习有许多优点,例如能够自动学习和改进性能、能够处理大量数据、能够提高决策的准确性等。 9. ...

    抽象工厂模式+工厂方法模式+策略模式+类图实现手机加工厂

    在软件设计领域,模式是一种解决常见问题的有效方法。本文将探讨三个重要的设计模式:抽象工厂模式、工厂方法模式以及策略模式,并结合一个实际的场景...通过学习和应用这些设计模式,可以提升软件开发的质量和效率。

    工厂模式源代码

    《工厂模式源代码》 工厂模式是软件设计模式中的一种,属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,当我们创建对象时,...通过学习和实践工厂模式,开发者能够更好地设计和构建复杂的软件系统。

    软件编程模式---工厂模式基础

    通过学习工厂模式,我们可以更好地理解和处理对象的创建,使得代码更加模块化,易于维护和扩展。在实际开发中,尤其是在大型项目中,工厂模式经常被用来构建可复用的组件和模块,提高了代码的可读性和可维护性。希望...

    设计模式之工厂模式

    在学习工厂模式时,Demo是十分重要的学习工具。通过编写实际的代码示例,我们可以更好地理解如何在实际项目中应用这些模式。例如,我们可以创建一个简单的Android应用,其中包含一个工厂类,根据用户的选择(如按钮...

    简单工厂模式学习代码

    在描述中提到的文章《简单工厂模式学习代码》来源于CSDN博客,作者hailushijie分享了关于如何理解和应用简单工厂模式的实践案例。文章可能包括以下内容: 1. **模式定义**: 简单工厂模式是一种静态工厂方法模式,...

    JAVA 设计模式 工厂模式 代理模式 迭代模式 责任链模式 源码

    以下是关于JAVA设计模式中提及的四种模式——工厂模式、代理模式、迭代器模式以及责任链模式的详细说明。 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建...

    讲故事,学(Java)设计模式-工厂模式Java开发Jav

    学习工厂模式不仅有助于提高代码的可读性和可维护性,还能促进代码的复用,降低系统耦合度。通过工厂模式,我们可以将对象的创建和对象的使用分离,使得代码更加灵活,易于扩展。此外,工厂模式还有助于隐藏对象创建...

    建造者模式学习以及与工厂模式的区别

    2. 结构差异:工厂模式只有一个工厂类,而建造者模式包含导演类和多个建造者类。 3. 产品组装:工厂模式直接返回完整的产品,而建造者模式将创建过程分解为多个步骤,最后由导演类组合成最终产品。 4. 可扩展性:...

    工厂模式综合 源代码+视频

    学习工厂模式不仅可以提高你的编程能力,还能帮助你在面对复杂系统设计时,更好地组织代码结构,降低类之间的耦合度。工厂模式是面向对象设计的基础,对于任何Java开发者来说,掌握这一模式都是非常重要的。因此,这...

    设计模式 工厂模式(附源码)

    工厂模式是一种常用的设计模式,它是创建型...学习设计模式,尤其是工厂模式,对于提升C#编程技能、理解和设计更高质量的软件系统至关重要。通过实践和理解这些模式,你将能够编写出更加灵活、可扩展和易于维护的代码。

Global site tag (gtag.js) - Google Analytics