设计模式之工厂模式

一、介绍

工厂模式属于设计模式的创建型模式,通过实现共同的抽象接口创建属于同一类类型的不同对象实现,隐藏了对象创建的逻辑,提供了一种创建对象的最佳方式。

二、优缺点

优点:
1、屏蔽产品对象的具体实现,使调用者只关注接口。
2、扩展性高,如果需要增加产品,只需要添加工厂类就可以,无需修改源代码。
3、通过名字就可以创建想要的对象。

缺点:
扩展性高,但每增加一个产品类就要增加一个具体的产品类和工厂类,系统中的类成倍增加,增加了类的复杂度。

三、应用

工厂类主要应用在日志记录器,数据访问等

1、可以根据系统具体需求,创建保存在本地磁盘,远程服务器或系统事件等日志对象实现不同功能。
2、数据库访问,如Hibernate可根据不同的配置访问不同数据库。

四、具体实现

抽象产品类接口:

package com.factoryPattern;

public  interface Shape {
    void draw();
}

具体产品实现类:

//Circle类
package com.factoryPattern;

public class Circle implements Shape {

    @Override
    public void draw() {
        // TODO Auto-generated method stub
        System.out.println("Circle");
    }

}
//Rectangle类
package com.factoryPattern;

public class Rectangle implements Shape {

    @Override
    public void draw() {
        // TODO Auto-generated method stub
        System.out.println("Ranctangle");
    }

}

工厂类:

package com.factoryPattern;

public class ShapeFactory {
    public Shape getShape(String name){

        if(name == null)
            return null;
        else if(name.equalsIgnoreCase("Rectangle"))
            return new Rectangle();
        else if(name.equalsIgnoreCase("Circle"))
            return new Circle();
        else if(name.equalsIgnoreCase("Square"))
            return new Square();
        return null;
    }
}

调用实例类:

package com.factoryPattern;
public class FactoryPatternDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ShapeFactory factory = new ShapeFactory();

        Shape rectangle = factory.getShape("Rectangle");
        rectangle.draw();

        Shape circle = factory.getShape("Circle");
        circle.draw();

        Shape square = factory.getShape("Square");
        square.draw();

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值