1.简单的工厂模式 Design pattern _ simple factory pattern
1.简单工厂模式解释:
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
2.代码例子:
package com.test.desiginpattern.factory.vehicle;
public class MovieDataBaseByAction extends MovieDateBase{
public String[] getResults()
{
String[] movies = new String[3];
switch (area) {
case "大陆":
movies = new String[] {"英雄","一代宗师","霍元甲"};
break;
case "香港":
movies = new String[] {"功夫","叶问","古惑仔"};
break;
}
return movies;
}
}
package com.test.desiginpattern.factory.vehicle;
public class MovieDataBaseByComedy extends MovieDateBase{
public String[] getResults()
{
String[] movies = new String[3];
switch (area) {
case "大陆":
movies = new String[] {"人在囧途","让子弹飞","泰囧"};
break;
case "香港":
movies = new String[] {"大话西游","少林足球","功夫"};
break;
}
return movies;
}
}
package com.test.desiginpattern.factory.vehicle;
public class MovieDateBase {
protected String area; //输入地区查询
//活得结果集
public String[] getResults()
{
String[] results = {};
return results;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
package com.test.desiginpattern.factory.vehicle;
public class MovieFactory
{
//根据参数获取相应实现业务方法的实体类
public static MovieDateBase getMovies(String operate)
{
MovieDateBase movieClass = new MovieDateBase();
switch(operate)
{
case "动作" : movieClass = new MovieDataBaseByAction();break;
case "喜剧" : movieClass = new MovieDataBaseByComedy();break;
}
return movieClass;
}
//打印信息用
public static void printContet(String printInfo,String[] content)
{
System.out.println("---"+printInfo+"----");
for(int i=0; i<content.length; i++)
{
System.out.println(content[i]);
}
}
//模拟客户端请求 传入电影类型获取类型库电影 在类型库电影传入地区获取该地区电影
public static void main(String[] args) {
MovieDateBase movieOperatea = getMovies("动作");
movieOperatea.area="香港";
String[] moviesa = movieOperatea.getResults();
//打印电影信息
printContet("动作片香港地区:",moviesa);
MovieDateBase movieOperateb = getMovies("喜剧");
movieOperateb.area="大陆";
String[] moviesb = movieOperateb.getResults();
//打印电影信息
printContet("喜剧片大陆地区",moviesb);
}
}
package com.test.desiginpattern.factory.vehicle;
public class MovieDataBaseByAction extends MovieDateBase{
public String[] getResults()
{
String[] movies = new String[3];
switch (area) {
case "大陆":
movies = new String[] {"英雄","一代宗师","霍元甲"};
break;
case "香港":
movies = new String[] {"功夫","叶问","古惑仔"};
break;
}
return movies;
}
}
package com.test.desiginpattern.factory.vehicle;
public class MovieDataBaseByComedy extends MovieDateBase{
public String[] getResults()
{
String[] movies = new String[3];
switch (area) {
case "大陆":
movies = new String[] {"人在囧途","让子弹飞","泰囧"};
break;
case "香港":
movies = new String[] {"大话西游","少林足球","功夫"};
break;
}
return movies;
}
}
package com.test.desiginpattern.factory.vehicle;
public class MovieDateBase {
protected String area; //输入地区查询
//活得结果集
public String[] getResults()
{
String[] results = {};
return results;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
}
package com.test.desiginpattern.factory.vehicle;
public class MovieFactory
{
//根据参数获取相应实现业务方法的实体类
public static MovieDateBase getMovies(String operate)
{
MovieDateBase movieClass = new MovieDateBase();
switch(operate)
{
case "动作" : movieClass = new MovieDataBaseByAction();break;
case "喜剧" : movieClass = new MovieDataBaseByComedy();break;
}
return movieClass;
}
//打印信息用
public static void printContet(String printInfo,String[] content)
{
System.out.println("---"+printInfo+"----");
for(int i=0; i<content.length; i++)
{
System.out.println(content[i]);
}
}
//模拟客户端请求 传入电影类型获取类型库电影 在类型库电影传入地区获取该地区电影
public static void main(String[] args) {
MovieDateBase movieOperatea = getMovies("动作");
movieOperatea.area="香港";
String[] moviesa = movieOperatea.getResults();
//打印电影信息
printContet("动作片香港地区:",moviesa);
MovieDateBase movieOperateb = getMovies("喜剧");
movieOperateb.area="大陆";
String[] moviesb = movieOperateb.getResults();
//打印电影信息
printContet("喜剧片大陆地区",moviesb);
}
}
---动作片香港地区:----
功夫
叶问
古惑仔
---喜剧片大陆地区----
人在囧途
让子弹飞
泰囧