设计模式—工厂模式

一、工厂模式作用

使用工厂模式的作用:就是获取对象,让使用者并不关心其具体实现;

(符合最少知识原则)

例如:Bitmap bitmap = BitmapFactory.decodeResource(res, id);就是一个工厂模式,传入id拿到对应bitmap对象。
二、工厂模式有哪些
(Dog,Cat,Bird extends Animal)
1、简单工厂模式(根据传入类别不一样,返回需要的对象)
/**
 * 简单工厂模式
 */
public class SimpleFactory {
    private static List<Animal> list = new ArrayList<>();
public static Object getInstance(int type) {  
	Animal animal = list.get(type);        
		if (animal != null) {            
			return animal;        
		}        
		switch (type) {            
			case 1:                
				animal = new Dog();                
			break;            
			case 2:                
				animal = new Cat();                
			break;            
			case 3:                
				animal = new Bird();                
			break;            
			default:                
				animal = new Dog();                
			break;        
			}        
		return animal;    
	}
    }
 
采用反射的方式:
public class CommonFactory {
    public <T extends Animal> T getInstance(Class<T> clz) {
        Animal animal = null;
        try {
            animal = (Animal) Class.forName(clz.getName()).newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return (T) animal;
    }
}

2、工厂方法(对象方法的实现,在子类实现)
public abstract class BaseFactory {
    public abstract Animal create();
}
public class CatFactory extends BaseFactory{
    @Override
    public Animal create() {
        return new Cat();
    }
}
public class DogFactory extends BaseFactory{
    @Override
    public Animal create() {
        return new Dog();
    }
}
3、抽象工厂
三、工厂模式,把对象实现隐藏起来,使得调用者不需要关心对象实现。例子中,new出来的对象,但实际对象生成会更复杂,使用者并不关心其产生。这样实现代码耦合性降低,并且获取对象实现了代码复用。我开始就晕在这代码不更多了?但是重点在于,写的代码以后给别人去调用,就明白这样写的好处了。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值