工厂模式的作用在于将创建对象的过程封装到一个类中完成,减少在客户端的耦合程度。 工厂模式有几种实现的形式,今天从最简单的一种实现入手,简单工厂模式(静态工厂模式)。简单工厂模式也称为静态工厂模式,就是因为在整个工厂类中,只有一个静态的工厂方法用于创建实例对象。
简单工厂模式中一共包含了三个角色类型: 工厂角色,抽象产品角色,具体产品角色。
- 工厂类角色: 担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的逻辑
- 抽象产品角色: 担任这个角色的类是工厂方法模式所创建的对象的超类
- 具体产品角色: 实际返回给客户端的产品对象
// 工厂类角色
public class SimpleFactory(){
/* 静态工厂方法 */
public static Produce factory(String type){
// 根据不同的类型,创建不同的产品对象
if("A".equals(type)){
return new ProduceA();
}else if("B".equals(type)){
return new ProduceB();
}else if("C".equals(type)){
return new ProduceB();
}
}
}
// 抽象产品类
public interface Produce{
public void doSome();
}
// 具体产品类
public Class ProduceA implement Produce{
public void doSome(){
// do something for produceA;
}
}
public Class ProduceB implement Produce{
public void doSome(){
// do something for produceB;
}
}
public Class ProduceC implement Produce{
public void doSome(){
// do something for produceC;
}
}
简单工厂模式的优点与缺点
简单工厂模式的优点在于这个类中含有了必要的判断逻辑,可以决定什么时候创建哪个产品类返回给客户,而客户端仅负责对产品类的消费行为既可。
但也因为工厂方法中存在了必要的判断逻辑,为简单工厂模式带来了不少的缺点。
- 这个工厂类集合了所有产品的判断逻辑,让这个类成为了一个无所不知的全能类,让这个类拥有了太多的责任,如果这个类不能工作时,将会带来很大的影响。
- 类中包含了必要的判断逻辑,如果添加了产品类,那么必然导致工厂方法的修改。而这种行为,恰恰违反了“开-闭”原则,对修改的开打,必然会带来很大的问题。
分享到:
相关推荐
介绍的是工厂模式 包括简单工厂模式、工厂方法模式、抽象工厂模式 包括PPT和代码
本文章通俗易懂的对工厂模式进行了讲解,相信您看完这篇文章会对工厂模式有更深入的了解
3. Qt工厂模式工程 4. Qt工厂模式例程 5. Qt工厂模式例子 6. 简单工厂模式 部分源码实例: // 奔驰工厂 class BenzFactory : public AFactory { public: ICar* CreateCar() { return new BenzCar(); } }; // ...
设计模式之简单工厂模式案例
java设计模式 简单工厂模式uml类图,一张图就让你秒懂简单工厂模式
运用两个典型案例,实现软件设计模式的简单工厂模式,从该案例中,可以体会简单工厂模式的特点
JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
c#工厂模式 简单工厂,抽象工厂,单件模式
JAVA设计模式工厂模式之简单工厂[定义].pdf
大话设计模式源代码之简单工厂模式 经典代码
通过C++实现了简单工厂模式、工厂模式、抽象工厂模式三大设计模式的经典案例。
这是设计模式中简单工厂设计模式的源代码,工程中以一个计算器的示例来体现简单工厂模式的精髓。简单工厂模式主要解决创建对象的问题。
C++ 工厂模式 (简单工厂、工厂和抽象工厂)
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...
工厂方法模式和抽象工厂模式的区别,对工厂方法模式和抽象工厂模式做了简单的比较
反射例子代码、简单工厂模式例子代码、工厂模式例子代码
java工厂设计模式之简单工厂实例以及介绍,程序已经运行过能正常跑通
设计模式之简单工厂模式,有文档解说,有代码案例。很适合初学者学习!
java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂
设计模式课程资料——简单工厂模式,使用Java实现,在eclipse进行编译