设计模式—工厂模式
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出来的对象,但实际对象生成会更复杂,使用者并不关心其产生。这样实现代码耦合性降低,并且获取对象实现了代码复用。我开始就晕在这代码不更多了?但是重点在于,写的代码以后给别人去调用,就明白这样写的好处了。
相关文章推荐
- 设计模式—工厂模式
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 重构 - 理解设计模式的捷径(4 设计模式的引入 - 工厂模式)
- 设计模式之3个工厂模式
- [Gof设计模式]简单工厂模式和工厂模式的C++实现
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式 简单工厂模式和工厂模式的区别
- 设计模式随笔-从“有病”说起(工厂模式前传)
- 设计模式学习(二)简单工厂模式-工厂模式-抽象工厂模式
- Java 设计模式-工厂模式
- 设计模式-工厂模式(手工作坊到工业化的转变 c#实现)
- 设计模式之——工厂模式
- 设计模式(1)-工厂模式(Factory)
- 设计模式-工厂模式(手工作坊到工业化的转变 c#实现)
- (转帖) 设计模式随笔-从“有病”说起(工厂模式前传)
- 魔兽争霸之PHP设计模式-工厂模式[Factory]
- [转]C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式-工厂模式(手工作坊到工业化的转变 c#实现)