您的位置:首页 > 其它

设计模式—工厂模式

2017-01-26 15:17 204 查看
一、工厂模式作用使用工厂模式的作用:就是获取对象,让使用者并不关心其具体实现;(符合最少知识原则)
例如: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
4000
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{@Overridepublic Animal create() {return new Cat();}}
public class DogFactory extends BaseFactory{@Overridepublic Animal create() {return new Dog();}}
3、抽象工厂
三、工厂模式,把对象实现隐藏起来,使得调用者不需要关心对象实现。例子中,new出来的对象,但实际对象生成会更复杂,使用者并不关心其产生。这样实现代码耦合性降低,并且获取对象实现了代码复用。我开始就晕在这代码不更多了?但是重点在于,写的代码以后给别人去调用,就明白这样写的好处了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: