spring学习必备设计模式之工厂模式
2016-03-02 16:53
465 查看
参考简单工厂模式。
学习前需要知识:面向对象;多态。
1.对象是类的实例,通过对象可以操作类的方法
2.多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
先说简单工厂模式:
工厂模式的作用:用于创建对象
首先需要这么几个东西:具体产品类,抽象产品类,工厂类和客户端。
具体产品类:将需要创建的各种不同对象的相关代码封装到不同类中,这些类称为具体产品类。
抽象产品类:将公共代码进行抽象和提取后封装在一个类中,这个类叫产品抽象类。
工厂类:在工厂类中提供一个创建产品的方法,该方法根据传递参数的不同创建不同的具体产品对象。
客户端:客户端调用工厂类的方法并传入相应的参数即可得到一个产品对象。
例子:
1.抽象产品类
2.具体产品类:
3.工厂类
4.客户端
*
* 客户端调用工厂类的方法并传入参数
*/
public class Client {
public static void main(String args[]){
Factory fac = new Factory();
Use u = fac.produce("eraser");//通过工厂类创建产品对象
System.out.println("我被创建了");
/*
* fac.produce("eraser")创建了具体产品类
* 具体产品类是抽象产品类的父类
* 这里用了多态的知识
*/
//Use u = new Pencil();
u.use();
}
}
5.输出结果
学习前需要知识:面向对象;多态。
1.对象是类的实例,通过对象可以操作类的方法
2.多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
先说简单工厂模式:
工厂模式的作用:用于创建对象
首先需要这么几个东西:具体产品类,抽象产品类,工厂类和客户端。
具体产品类:将需要创建的各种不同对象的相关代码封装到不同类中,这些类称为具体产品类。
抽象产品类:将公共代码进行抽象和提取后封装在一个类中,这个类叫产品抽象类。
工厂类:在工厂类中提供一个创建产品的方法,该方法根据传递参数的不同创建不同的具体产品对象。
客户端:客户端调用工厂类的方法并传入相应的参数即可得到一个产品对象。
例子:
1.抽象产品类
package com.productpattern; /* * 这是一个抽象产品类 * 每个产品都可以供使用 */ public interface Use { public void use(); }
2.具体产品类:
public class Pencil implements Use { @Override public void use() { System.out.println("------>我是铅笔我可以被人使用"); } public void write() { System.out.println("------>我是铅笔我可以用来书写"); } }
public class Eraser implements Use { @Override public void use() { System.out.println("---->我是橡皮我可以被人使用"); } public void cachu() { System.out.println("---->我是橡皮擦可以擦除"); } }
3.工厂类
public class Factory { //提供创建产品的方法 public Use produce(String type){ if("pencil".equals(type)){ System.out.println("工厂模式用于创建对像,铅笔将要被创建"); return new Pencil(); }else if("eraser".equals(type)){ System.out.println("工厂模式用于创建对<span style="font-family: Arial, Helvetica, sans-serif;">像</span>,橡皮擦将要被创建"); return new Eraser(); } return null; } }
4.客户端
*
* 客户端调用工厂类的方法并传入参数
*/
public class Client {
public static void main(String args[]){
Factory fac = new Factory();
Use u = fac.produce("eraser");//通过工厂类创建产品对象
System.out.println("我被创建了");
/*
* fac.produce("eraser")创建了具体产品类
* 具体产品类是抽象产品类的父类
* 这里用了多态的知识
*/
//Use u = new Pencil();
u.use();
}
}
5.输出结果
相关文章推荐
- C#与.net高级编程 C#的多态介绍
- C#中面向对象编程机制之多态学习笔记
- C#中的多态深入理解
- C#中多态、重载、重写区别分析
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- 介绍php设计模式中的工厂模式
- asp.net 简单工厂模式和工厂方法模式之论述
- 深入理解JavaScript系列(28):设计模式之工厂模式详解
- js简单工厂模式用法实例
- JavaScript设计模式经典之工厂模式
- javascript 模式设计之工厂模式详细说明
- javascript每日必学之多态
- c#基础学习之多态
- 实例解析Java单例模式编程中对抽象工厂模式的运用
- PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
- 从汇编看c++中多态的应用
- javascript 面向对象全新理练之继承与多态
- Java多态的使用注意事项
- python中getattr函数使用方法 getattr实现工厂模式
- 工厂模式在Zend Framework中应用介绍