java设计模式之工厂模式(2)
来源:互联网 发布:淘宝网的营销策略 编辑:程序博客网 时间:2024/05/18 03:29
工厂模式:属于创建型模式。同我们生活中的厂家很相似。我们并不自己制造(new)产品,而是依靠厂家制造,我们只是拿来使用。简单的说就是让工厂
根据我们的需求给我们new一个对象。
工厂模式又分为工厂方法模式和抽象工厂模式。 工厂方法模式又分为:普通工厂方法,静态工厂方法.
package com.pattern.build.facotry.simple;/** * 水果接口 * @author chuer * @date 2014-7-24 下午6:15:44 * @version V1.0 */public interface Fruit {public void name(); //水果名称}
package com.pattern.build.facotry.simple;/** * 苹果 * @author chuer * @date 2014-7-24 下午6:16:08 * @version V1.0 */public class Apple implements Fruit {@Overridepublic void name() {System.out.println("apple");}}
package com.pattern.build.facotry.simple;/** * 橘子 * @author chuer * @date 2014-7-24 下午6:16:19 * @version V1.0 */public class Orange implements Fruit {@Overridepublic void name() {System.out.println("orange");}}
package com.pattern.build.facotry.simple;public class FruitFactory {//这个工厂是一个单例模式(针对普通工厂方法)private FruitFactory(){}private static FruitFactory factory = new FruitFactory();public static FruitFactory getInstance(){return factory;}//普通工厂方法模式:/** * 根据水果名称 实例化一个水果对象 * @param name * @return */public Fruit createFruit(String name){Fruit fruit = null;if(name.equals("apple")){fruit = new Apple();}else if(name.equals("orange")){fruit = new Orange();}return fruit;}/** * 创建苹果 * @return */public Fruit createApple(){return new Apple();}/** * 创建橘子 * @return */public Fruit createOrange(){return new Orange();}//----------------------------分割线-----------------------------------//静态工厂方法模式public static Fruit create_fruit(String name){Fruit fruit = null;if(name.equals("apple")){fruit = new Apple();}else if(name.equals("orange")){fruit = new Orange();}return fruit;}/** * 创建苹果 * @return */public static Fruit create_apple(){return new Apple();}/** * 创建橘子 * @return */public static Fruit create_orange(){return new Orange();}}
package com.pattern.build.facotry.simple;public class Client {public static void main(String[] args) {Fruit fruit = FruitFactory.getInstance().createFruit("apple");fruit.name();fruit = FruitFactory.getInstance().createFruit("orange");fruit.name();}}
通过代码我们可以看出每种工厂方法模式都有两种写法,其中一种需要我们传递一个标识来确定要创建那种产品,而另一种不需要。
也就是一种是单方法一种是多方法。
优点就是简单易用。但是同样优点也是它的缺点 :当我们要新加一种叫做香蕉的水果时,我们必须修改工厂类。对我们后期维护增加
了一点负担。
抽象工厂模式可以拟补这一缺点。
package com.pattern.build.facotry.abs;import com.pattern.build.facotry.simple.Fruit;public interface AbstractFactory {public Fruit crearFruit();}
package com.pattern.build.facotry.abs;import com.pattern.build.facotry.simple.Apple;import com.pattern.build.facotry.simple.Fruit;public class AppleFactory implements AbstractFactory {@Overridepublic Fruit crearFruit() {return new Apple();}}
package com.pattern.build.facotry.abs;import com.pattern.build.facotry.simple.Fruit;import com.pattern.build.facotry.simple.Orange;public class OrangeFactory implements AbstractFactory {@Overridepublic Fruit crearFruit() {return new Orange();}}
看到抽象工厂模式的代码,我们看到确实如果要增加一种水果的话,不用修改原来以后的工厂类,而是重新建立一个类。但是如果存在很多的
水果那么就会出现很多的工厂类。
总之,工厂方法模式和抽象工厂模式各有优势。可以根据自己的真实情况,选择使用。
0 0
- 设计模式之工厂模式(java)
- Java之设计模式(工厂模式)
- 设计模式之工厂模式(Java)
- java设计模式之工厂模式(2)
- java设计模式之工厂设计模式(简单工厂设计模式、工厂设计模式、抽象设计模式)
- 设计模式-java工厂模式2(抽象工厂模式)
- 设计模式之工厂模式(2)
- (2)设计模式之工厂模式
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式) (转)
- (转载)JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- Java设计模式之工厂模式(一):简单工厂模式+工厂方法模式
- java设计模式(2)--工厂模式
- java 设计模式-创建模式之工厂方法模式2
- Java设计模式之工厂设计模式
- [java]设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- Java设计模式之工厂设计模式
- JAVA设计模式之工厂设计模式
- 堆、栈、堆栈的含义(转)
- 使用Bitlocker使用智能卡加密数据
- 2014 Multi-University Training Contest 2 - 1011 / hdu 4882 ZCC Loves Codefires
- unix编译器gcc和g++
- 测试环境安装11g dataguard
- java设计模式之工厂模式(2)
- error:error C2065: 'ConvertStringSecurityDescriptorToSecurityDescriptor' : undeclared identifier
- Android进程与线程基本知识
- 通过ListView,ImageButton,Popupwindow实现手机QQ登陆时用户名下拉功能
- FLV文件格式解析
- Material Design(六)
- syslog配置
- 倒 F型天线
- java中的各种路径的获取方式