SimpleFactory 也叫做Static factory (静态工厂设计模式),不用说都知道是创造型工厂模式之一
其实不是的,简单工厂设计模式,并不是23种设计模式之一,也许它不满足开闭原则吧
通过我自己写的例子来阐述设计模式
现在一个培训机构要输出Coder 码农 有JAVACoder IOSCoder ..等等
我公司想要 培训机构给我输出人才,此时 培训机构就可以看做工厂类 CoderbuilderFactory
工厂类里包可含商务逻辑,是简单工厂设计的核心。
还有一个码农的接口 Coder
以及多个具体的码农 JAVACoder IOSCoder
其实不是的,简单工厂设计模式,并不是23种设计模式之一,也许它不满足开闭原则吧
通过我自己写的例子来阐述设计模式
现在一个培训机构要输出Coder 码农 有JAVACoder IOSCoder ..等等
我公司想要 培训机构给我输出人才,此时 培训机构就可以看做工厂类 CoderbuilderFactory
工厂类里包可含商务逻辑,是简单工厂设计的核心。
还有一个码农的接口 Coder
以及多个具体的码农 JAVACoder IOSCoder
类图:
<span style="font-family: gotham, helvetica, arial, sans-serif; font-size: 14px; line-height: 1.571428em;">package Simplefactory;</span>
/**
* 程序员的接口 这里运用了开闭原则 对扩展可以开放
* @author coffee
*
*/
public interface Coder {
//程序员敲代码的抽象方法
public void Code();
}
package Simplefactory;
/**
* IOS开发程序员
* @author coffee
*
*/
public class IOScoder implements Coder {
//具体的实现方法
@Override
public void Code() {
System.out.println("写代码,开发IOS项目");
}
}
package Simplefactory;
/**
* java程序员
* @author coffee
*
*/
public class JavaCoder implements Coder {
//具体的实现方法
@Override
public void Code() {
System.out.println("写代码,开发Java项目");
}
}
package Simplefactory;
/**
* 工厂设计模式 简单工厂 用一个程序员的例子说明
* 又称呼 静态工厂方法 static Factory Method
* @author coffee
*
*/
public class Test {
public static void main(String[] args) {
Coder coder= CoderFactory.buildCoder("IOS");
coder.Code();
}
}
测试用例发现
生产Coder的时候 只需要指定 传入参数是什么,而且传入的参数必须是比较固定的几个。所以工厂部分的设计是不满足开闭原则的。