工厂模式

来源:互联网 发布:东软医保软件 编辑:程序博客网 时间:2024/06/08 07:10


来源:实验楼

什么是工厂模式

工厂模式在面向对象的程序设计中,通常是一个用来创建其他对象的对象。工厂模式根据不同的参数来实现不同的分配方案和创建对象。
例子:如果我们用工厂来创建人这个对象,如果我们需要创建一个男人对象,工厂就会为我们创建一个男人,要是我们需要一个女人,工厂就会为我们生产一个女人

工厂模式:

  1. 简单工厂模式
  2. 工厂方法模式
  3. 抽象工厂模式

简单工厂模式实例

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
原创粉丝点击