你的位置:首页 > 软件开发 > Java > java 简单工厂 工厂模式

java 简单工厂 工厂模式

发布时间:2017-11-11 01:00:05
《Head First 设计模式》学习中分类简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 介绍简单工厂模式:    简单工厂其实并不是一个设计模式,反而比较像是一种编程习惯 ...

java 简单工厂 工厂模式

                    《Head First 设计模式》学习中

分类

  • 简单工厂模式(Simple Factory) 
  • 工厂方法模式(Factory Method) 
  • 抽象工厂模式(Abstract Factory) 

介绍

  • 简单工厂模式:

    简单工厂其实并不是一个设计模式,反而比较像是一种编程习惯,但是由于经常被使用,所以才被称为简单工厂模式,你可以把它看为工厂模式的一种特例,但是不能因为它不是一个真正的设计模式,就忽略它。

  • 工厂方法模式:           

     一个抽象产品类,可以派生出多个具体产品类。   
              一个抽象工厂类,可以派生出多个具体工厂类。   
              每个具体工厂类只能创建一个具体产品类的实例。

  • 抽象工厂模式:

 

    多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。   
    一个抽象工厂类,可以派生出多个具体工厂类。   
    每个具体工厂类可以创建多个具体产品类的实例。   

  • 区别:

    工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。   
    工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

简单工厂类图

    java 简单工厂 工厂模式

 

 

简单工厂实例

  产品类

package com.Observer.model;public class food {		public food(){	}			}

 具体产品类

package com.Observer.model;public class ChickenPot extends food {		public ChickenPot(){		System.out.println("黄焖鸡");	}	}

  

package com.Observer.model;public class Noodles extends food {		public Noodles(){		System.out.println("砂锅方便面");	}		}

 工厂类

package com.Observer.model;public class SimpleFoodFactory {		public food create(String type){				if(type.equals("黄焖鸡")){						return new ChickenPot();					}else if(type.equals("砂锅方便面")){						return new Noodles();					}				return null;			}}

 测试类

package com.Observer.model;public class Test {	public static void main(String[] args) {		SimpleFoodFactory factory = new SimpleFoodFactory();				food food = factory.create("砂锅方便面");				food food1 = factory.create("黄焖鸡");	}}

 输出结果:

砂锅方便面黄焖鸡

 简单工厂的优势: 

    如果以后要实现改变的时候,只需要修改工厂类就可以

工厂模式实例:

  利用简单工厂开的饭店太红火了,引来了两个代理商,因为我们的代码处理方便使用,所以他们想使用我们的代码来确保质量。这样我们就可以使用工厂模式

 产品类:

package com.Observer.model;public abstract class food {		public food(){	}}

  具体产品类

package com.Observer.model;public class ChickenPot extends food {		public ChickenPot(String name){		System.out.println(name + " :黄焖鸡");	}	}

 

package com.Observer.model;public class Noodles extends food {		public Noodles(String name){		System.out.println(name + " :砂锅方便面");	}		}

 工厂接口

package com.Observer.model;public interface factoryFood {		food create(String type);}

 工厂实现类

package com.Observer.model;/** * 通州店 * @author Administrator * */public class TongFood implements factoryFood {	@Override	public food create(String type) {		if (type.equals("黄焖鸡")) {			return new ChickenPot("通州分店");		} else if (type.equals("砂锅方便面")) {			return new Noodles("通州分店");		}		return null;	}}

  

package com.Observer.model;/** * 昌平店 * @author Administrator * */public class ChangFood implements factoryFood {	@Override	public food create(String type) {		if (type.equals("黄焖鸡")) {			return new ChickenPot("昌平分店");		} else if (type.equals("砂锅方便面")) {			return new Noodles("昌平分店");		}		return null;	}}

测试类

package com.Observer.model;public class Test {	public static void main(String[] args) {		factoryFood factory = new TongFood();		factory.create("黄焖鸡");				factoryFood factory1 = new ChangFood();				factory1.create("砂锅方便面");	}}

输出结果:

通州分店 :黄焖鸡昌平分店 :砂锅方便面

  

工厂方法模式:

  定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类

 

 参考:   

 

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:java 简单工厂 工厂模式

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。