java设计模式--创建模式--工厂方法

工厂方法定义:

  

 1                                             工厂方法
 2
 3  概述
 4     定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
 5
 6  适用性
 7     1.当一个类不知道它所必须创建的对象的类的时候。
 8
 9     2.当一个类希望由它的子类来指定它所创建的对象的时候。
10
11     3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
12              参与者
13     1.Product
14       定义工厂方法所创建的对象的接口。
15
16     2.ConcreteProduct
17       实现Product接口。
18
19     3.Creator
20       声明工厂方法,该方法返回一个Product类型的对象。
21       Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
22       可以调用工厂方法以创建一个Product对象。
23
24     4.ConcreteCreator
25       重定义工厂方法以返回一个ConcreteProduct实例。

测试代码:

 1 public class Test {
 2
 3     public static void main(String[] args) {
 4         IWorkFactory studentWorkFactory = new StudentWorkFactory();
 5         studentWorkFactory.getWork().doWork();
 6
 7         IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
 8         teacherWorkFactory.getWork().doWork();
 9     }
10
11 }
1 public interface IWorkFactory {
2
3     Work getWork();
4 }
1 public interface Work {
2
3     void doWork();
4 }
1 public class StudentWorkFactory implements IWorkFactory {
2
3     public Work getWork() {
4         return new StudentWork();
5     }
6
7 }
1 public class StudentWork implements Work {
2
3     public void doWork() {
4         System.out.println("学生做作业!");
5     }
6
7 }
1 public class TeacherWorkFactory implements IWorkFactory {
2
3     public Work getWork() {
4         return new TeacherWork();
5     }
6
7 }
1 public class TeacherWork implements Work {
2
3     public void doWork() {
4         System.out.println("老师审批作业!");
5     }
6
7 }
时间: 2024-10-11 00:37:19

java设计模式--创建模式--工厂方法的相关文章

Java设计模式3:工厂方法模式

工厂方法模式 工厂方法模式是类的创建模式.工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工厂推迟到子类中. 工厂方法模式 工厂方法模式是对简单工厂模式进一步抽象的结果. 假如是不使用反射的工厂方法模式,那么所有的if... else if...else都放在工厂类中,势必造成工厂类的无限臃肿 这时候就需要工厂方法模式来处理这个问题了.工厂方法模式中,核心的工厂类不再负责所有对象的创建,而是将具体的创建工作交给子类去做.这个类则摇身一变变成了一个抽象工厂角色,仅仅负责给出具体工厂子

java设计模式 -------- 创建模式 之 工厂方法模式

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 上节的简单工厂模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到工厂方法模式,创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码. 依然用上节的例子,四则运算,采用工厂方法模式,各部分的关系如下图: 工厂方法

java设计模式 -------- 创建模式 之 抽象工厂模式

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 工厂方法模式和抽象工厂模式不好区分清楚: 工厂方法模式特点: 1. 一个抽象产品类,可以派生出多个具体产品类. 2. 一个抽象工厂类,可以派生出多个具体工厂类. 3. 每个具体工厂类只能创建一个具体产品类的实例. 抽象工厂模式特点: 1. 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类. 2. 一个抽象工厂类,可以派生出多个具体工厂类. 3. 每个具体工厂类可以创建多个

java设计模式 -------- 创建模式 之 简单工厂模式

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 工厂模式是最常用的模式,因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,如A a = new A(),工厂模式也是用来创建用来创建实例对象的,所以以后new时要多个心眼,是否可以考虑使用工厂模式. 简单工厂模式又可以分成三种模式: 1) 普通简单工厂模式 2) 多方法简单工厂模式 3) 多静态方法简单工厂模式 普通简单工厂模式: 举例:(简单的

java设计模式 -------- 创建模式 之 单例模式

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 单例模式也是创建模式中的一种. 单例模式: 所谓的单例模式,即单一的实例,保证类在内在中只有一个对象. 举例: windows的打印服务,网络计数器 应用: 线程池,数据库连接池,Runtime 在应用单例模式前,先来看一个例子. Student.java public class Student { } StudentTest.java public class Studen

java设计模式--创建模式--原型模式

原型模式: 1 原型模式 2 概述 3 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 4 5 适用性 6 1.当一个系统应该独立于它的产品创建.构成和表示时. 7 8 2.当要实例化的类是在运行时刻指定时,例如,通过动态装载. 9 10 3.为了避免创建一个与产品类层次平行的工厂类层次时. 11 12 4.当一个类的实例只能有几个不同状态组合中的一种时. 13 14 建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些. 15 16 参与者 17 1.

JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象. 在这些情况,新对象的建立就是一个 "过程",不仅是一个操作,像一部大机器中的一个齿轮传动. 模式的问题:你如何能轻松方便地构造对象实例,而不必关心构造对象实

Java设计模式之二工厂模式

在上一篇中我们学习了单例模式,介绍了单例模式创建的几种方法以及最优的方法.本篇则介绍设计模式中的工厂模式,主要分为简单工厂模式.工厂方法和抽象工厂模式. 简单工厂模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法模式.简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.调用只需要告诉工厂类所需要的类型,工厂类就会返回需要的产品类工厂的子类. 可以说是工厂模式中最简单的一种. 打个比方,我们在电脑经常玩游戏,我们只需要告诉电脑我们要玩什么游戏,电脑就会打开这个游戏,我们并不需要关心游戏是

大话设计模式之简单工厂模式&工厂方法模式&抽象工厂模式

创造类模式分为三种:简单工厂模式,工厂模式和抽象工厂模式. 定义: 简单工厂模式:用一个单独的类来做创造实例的过程. 工厂模式:一个用于创建对象的接口,让子类决定实例化哪一个类,讲一个类的实例化 延迟到其子类. 抽象工厂模式:为创建一组相关或相互依赖的对象的类,而不指定具体类. 结构图: 这是简单工厂的结构图,从图中就很好理解. 简单工厂的优点: 根据用户需要,new出需要的对象. 但是简单工厂弊端: 当新加入一个功能是,就要修改工厂.这个时候,就需要工厂模式了. 从图中我们可以看出: 工厂模式