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

工厂方法模式java源码实现(大话设计模式学习备忘录)

阅读更多
public class LeiFeng {

	public void Sweep(){
		System.out.println("扫地");
	}
	public void Wash(){
		System.out.println("洗衣");
	}
	public void BuyRice(){
		System.out.println("买米");
	}
}


public class Undergraduate extends LeiFeng {

}

public class Volunteer extends LeiFeng {

}

public interface IFactory {

	LeiFeng CreateLeiFeng();
}

public class UndergraduateFactory implements IFactory {

	@Override
	public LeiFeng CreateLeiFeng() {
		return new Undergraduate();
	}

}

public class VolunteerFactory implements IFactory {

	@Override
	public LeiFeng CreateLeiFeng() {
		return new Volunteer();
	}

}

/**
 * <h1>工厂模式</h1>
 * QS:学雷锋
 * @author xangqun
 * 
 */
public class Program {

	/**<b>工厂模式(factory)</b>
	 * 定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
	 * <br>简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
	 * <br>工厂方法模式实现时,客户端需要决定实例化那个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。
	 * 你想要加的功能,本来是改工厂类的,而现在是修改客户端。
	 * @param args
	 */
	public static void main(String[] args) {

		IFactory factory=new VolunteerFactory();
		LeiFeng volunteer=factory.CreateLeiFeng();
		volunteer.BuyRice();
		volunteer.Wash();
		volunteer.Sweep();
		
		IFactory factory2=new UndergraduateFactory();
		LeiFeng student=factory2.CreateLeiFeng();
		student.BuyRice();
		student.Wash();
		student.Sweep();
	}

}
分享到:
评论

相关推荐

    日历备忘录Java源码

    在本项目中,"日历备忘录Java源码" 提供了一套完整的日历应用程序的源代码,主要由四个核心文件组成:NotePad.java、CalendarPad.java、Month.java 和 Year.java。这些文件分别代表了备忘录、日历、月份和年份的功能...

    微信小程序源码 备忘录(学习版)

    微信小程序源码 备忘录(学习版)微信小程序源码 备忘录(学习版)微信小程序源码 备忘录(学习版)微信小程序源码 备忘录(学习版)微信小程序源码 备忘录(学习版)微信小程序源码 备忘录(学习版)微信小程序源码 备忘录(学习...

    微信小程序 备忘录 (源码)

    微信小程序 备忘录 (源码)微信小程序 备忘录 (源码)微信小程序 备忘录 (源码)微信小程序 备忘录 (源码)微信小程序 备忘录 (源码)微信小程序 备忘录 (源码)微信小程序 备忘录 (源码)微信小程序 备忘录 (源码)微信小...

    java设计模式刘伟源码

    责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、...

    Java设计模式之工厂方法的工厂方法实现的源码

    这个源码示例非常适合学习和理解工厂方法模式,尤其是如何在Java中实现二级工厂。同时,它还展示了设计模式在实际场景中的应用,如商场促销活动的模拟,帮助开发者了解如何通过模式来提高代码的可维护性和复用性。...

    基于Java语言的经典设计模式实现源码学习

    基于Java语言的经典设计模式实现源码学习是一个综合性的学习资源,涵盖了Java领域内广为人知的设计模式。设计模式是软件工程中用于解决常见问题的一套被反复使用、多数人知晓、代码编写经验的总结。Java作为一门成熟...

    备忘录系统(源码+项目说明).zip

    备忘录系统(源码+项目说明).zip备忘录系统(源码+项目说明).zip备忘录系统(源码+项目说明).zip备忘录系统(源码+项目说明).zip备忘录系统(源码+项目说明).zip备忘录系统(源码+项目说明).zip备忘录系统...

    毕业设计基于JavaWeb实现的一个备忘录系统项目源码.zip

    毕业设计基于JavaWeb实现的一个备忘录系统项目源码。难度适中,新手自己可操作 备忘录 介绍 后端部分基于Servlet、Jdbc实现. 前端部分基于Layui、jqury实现。 一个简单的前后端分离Demo,前后端交互JSON数据格式 ...

    深入浅出设计模式附书源码Java版源码

    例如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、访问者模式(Visitor)、责任链模式(Chain of Responsibility)、命令模式(Command)、备忘录模式...

    java版大话西游源码

    《Java版大话西游源码》是一款基于Java编程语言开发的角色扮演游戏(RPG)教程,对于初学者和想要深入理解游戏开发的程序员来说,它提供了丰富的学习资源。这款教程涵盖了多线程技术和自动寻路算法等核心概念,是...

    java版本的设计模式的实现demo

    根据不同的情况,可以实现简单工厂模式、工厂方法模式或抽象工厂模式。 4. 观察者模式 观察者模式是典型的行为型模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,其所有依赖者都会得到通知并自动...

    《大话设计模式》C++实现-design-patterns-cpp.zip

    《大话设计模式》C++实现-design-patterns-cpp

    Java设计模式【之】 工厂方法模式(源码)

    * 工厂方法模式解决:满足 OCP原则,修改关闭,扩展开放 * * 比如:出现了新款咖啡类 * 旧的咖啡类代码不需要变动,只需要 * * 1.新增对应的咖啡类 * 2.修改工厂类,新增一行判断逻辑 * 3.main方法中的旧...

    Head First 设计模式 JAVA源码

    所有的设计模式Java实现。 第一讲:简单工厂模式 第二讲:工厂方法模式 第三讲:抽象工厂模式 第四讲:工厂模式在开发中的运用 第五讲:单例模式 第六讲:原型模式 第七讲:建造者模式 第八讲:装饰模式 第...

    java抽象工厂模式源码实例

    总的来说,这份压缩包提供了一个Java实现的抽象工厂模式实例,通过学习和理解这个例子,你可以深入掌握抽象工厂模式的原理和使用场景,这对于提升你的Java编程能力以及软件设计水平非常有帮助。在实际项目中,灵活...

    基于大话设计模式的Java实现与案例辅助学习源码

    该项目为基于大话设计模式的Java实现源码库,共计117个文件,涵盖112个Java源代码文件、1个Git忽略规则文件、1个Markdown文档、1个Maven构建文件、1个命令行脚本文件以及1个XML配置文件。旨在通过丰富的案例辅助学习...

    23种设计模式java源码

    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。

    基于《大话设计模式》的Java设计模式学习源码实战

    该项目是一个基于《大话设计模式》的Java设计模式学习源码实战,包含41个文件,其中36个为Java源文件,4个为Markdown文档,以及1个LICENSE文件。通过实际编码实践,帮助开发者深入理解并掌握设计模式的应用。

    设计模式之备忘录(memento)

    标签“源码”和“工具”表明这个话题可能涉及实际代码实现和一些辅助工具的使用,例如使用备忘录模式来实现撤销/重做功能时,可能需要用到队列数据结构来管理备忘录对象。 在压缩包文件"Design"中,可能包含了与...

    Java设计模式之工厂方法的ifelse实现的源码

    在给定的"Java设计模式之工厂方法的ifelse实现"源码中,我们可以看到作者通过if...else语句来实现工厂方法的具体逻辑。通常,这种实现方式是针对不同类型的对象,根据条件判断来决定调用哪个具体类的构造函数。这种...

Global site tag (gtag.js) - Google Analytics