Java设计模式之工厂模式

一 工厂模式

1 工厂模式属于创建型模式,指的是不暴露给客户端创建对象逻辑,用一个共同的接口指向创建的对象。定义一个创建对象的接口,让子类决定实例化哪一个工厂类。适用于复杂系统

2 优点:调用者想创建对象只需要知道名称就行;扩展性高:如果想增加一个产品只需要一个工厂类;不用关心内部实现,只需要关心产品的接口

3 缺点: 每增加一个产品就需要增加一个具体类和工厂实现,过多会使系统变得复杂,也增加系统具体类的依赖

4适用场景:
日志记录器:记录可能会记录到本地磁盘,远程服务器,系统事件,用户可以选择记录到什么地方去
数据库访问:用户不知道采用哪一类数据库时候,以及数据库可能会变化时
设计一个连接服务器的框架:需要三个协议,http,pop3,rpc等协议,可将三者作为一个产品类,共同实现一个接口。

代码样例:
//定义抽象接口

public inteface Animal{
 void eat();
}

//定义三个具体的产品类来实现Animal接口

public Dog implements Animal{
public void eat(){
	System.out.println("Dog is eatting");
}

}

public Pig implements Animal{
public void eat(){
	System.out.println("Pig is eatting");
}
}

public Fish implements Animal{
public void eat(){
	System.out.println("Fish is eatting");
}
}

//定义工厂类提供创建对象的接口

public class AnimalFactory{
public Animal getAnimal(String type){
		if(type==null){
			return null;
	}
		if(type.equals("Dog")){
				return new Dog();
		}else if(type.equals("Pig")){
				return new Pig();
		}else if(type.equals("Fish")){
				return new Fish();
		}
}

}
//执行查看工厂类的正误

public class FactoryDemo{
public static void main(String args[]){
		AnimalFactory af = new AnimalFactory();
		af.getAnimal("Dog");
		af.getAnimal("Pig");
		af.getAnimal("Fish");
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值