工厂模式
来源:互联网 发布:东软医保软件 编辑:程序博客网 时间:2024/06/08 07:10
来源:实验楼
什么是工厂模式
工厂模式在面向对象的程序设计中,通常是一个用来创建其他对象的对象。工厂模式根据不同的参数来实现不同的分配方案和创建对象。
例子:如果我们用工厂来创建人这个对象,如果我们需要创建一个男人对象,工厂就会为我们创建一个男人,要是我们需要一个女人,工厂就会为我们生产一个女人
例子:如果我们用工厂来创建人这个对象,如果我们需要创建一个男人对象,工厂就会为我们创建一个男人,要是我们需要一个女人,工厂就会为我们生产一个女人
工厂模式:
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
简单工厂模式实例
Human.java
package com.designpattern.factory;abstract class Human {public abstract void Eat();public abstract void Sleep();public abstract void Beat();}
Man.java
package com.designpattern.factory;public class Man extends Human {@Overridepublic void Eat() {// TODO Auto-generated method stubSystem.out.println("man can eat");}@Overridepublic void Sleep() {// TODO Auto-generated method stubSystem.out.println("man can sleep");}@Overridepublic void Beat() {// TODO Auto-generated method stubSystem.out.println("man can da doudou");}}
Female.java
package com.designpattern.factory;public class Female extends Human {@Overridepublic void Eat() {// TODO Auto-generated method stubSystem.out.println("female can eat");}@Overridepublic void Sleep() {// TODO Auto-generated method stubSystem.out.println("female can sleep");}@Overridepublic void Beat() {// TODO Auto-generated method stubSystem.out.println("female can da doudodu");}}
工厂 HumanFactory.java
class HumanFactory {public static Human creatHuman(String gender) {// TODO Auto-generated constructor stubHuman human = null;if (gender.equals("man")) {human = new Man();} else {human = new Female();}return human;}}
测试Goddess.java
public class Goddess {public static void main(String[] args) {HumanFactory humanFactory = new HumanFactory();Human huamn = humanFactory.creatHuman("man");}}
工厂方法模式
工厂方法模式就是在简单工厂模式的基础上,把简单工厂抽象话了(或者说将工厂细化,专业化)
package com.designpattern.factorymethod;abstract class Human {abstract void Eat();abstract void Sleep();abstract void Beat();}abstract class HumanFactory {public abstract Human createHuman(String gender);}class ManFactory extends HumanFactory {@Overridepublic Human createHuman(String gender) {// TODO Auto-generated method stubreturn new Man();}}class FemaleFactory extends HumanFactory {@Overridepublic Human createHuman(String gender) {// TODO Auto-generated method stubreturn new Female();}}class Man extends Human {@Overridevoid Beat() {// TODO Auto-generated method stubSystem.out.println("female can beat");}@Overridevoid Eat() {// TODO Auto-generated method stubSystem.out.println("man can eat");}@Overridevoid Sleep() {// TODO Auto-generated method stubSystem.out.println("man can sleep");}}class Female extends Human {@Overridevoid Beat() {// TODO Auto-generated method stubSystem.out.println("female can beat");}@Overridevoid Eat() {// TODO Auto-generated method stubSystem.out.println("female can eat");}@Overridevoid Sleep() {// TODO Auto-generated method stubSystem.out.println("female can sleep");}}public class Goddess {public static void main(String[] args) {HumanFactory humanFactory = new ManFactory();Human h=humanFactory.createHuman("man");h.Eat();h.Beat();h.Sleep();}}
应用
说是在java库里面,根据参数不同返回的对象不同,还有就是Android里面的BitmapsFactory也是这个应用
0 0
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-静态工厂
- 工厂模式-抽象工厂
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- bzoj1009(kmp+dp+矩阵快速幂优化)必需复习
- n皇后
- C#入门6.7——字符串的分割
- 腾讯业务体系介绍
- 使用Intent启动Activity
- 工厂模式
- solver.prototxt解析
- eclipse自动补全的设置
- Android---intent传递参数
- (五)、运算符
- ng-cookies
- log函数的表达-求一个数的位数
- 使用Intent或Bundle传递参数,跳转页面。
- oj:string的substr()应用