/**
*简单工厂模式 :
*简单工厂模式有三部分组成:1.抽象产品类;2.具体产品类;3.工厂类
*/
/**
* 枚举类型,作为工厂方法的参数,用来说明需要哪个产品
*/
enum PRODUCTTYPE {
PRODUCTONE, PRODUCTTWO
}
/**
*工厂类,用来生产具体的产片,根据给定的产品标志
*/
class Factory{
static Product Productfactory(PRODUCTTYPE type)
{
Product product = null;
switch (type) {
case PRODUCTONE:
product = new SubProductOne();
break;
case PRODUCTTWO:
product = new SubProductTwo();
default:
break;
}
return product;
}
}
/**
*产品抽象类
*/
interface Product{
// method
public void doSomeThing();
}
/**
*产品具体类2
*/
class SubProductOne implements Product{
// concrete method
public void doSomeThing(){
System.out.println("SubProductOne");
}
}
/**
*产品具体类2
*/
class SubProductTwo implements Product{
// concrete method
public void doSomeThing(){
System.out.println("SubProductTwo");
}
}
/**
*
* 客户端测试调用
*
*/
public class Pattern_01_SimpleFactory {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//需要产品SubProductOne
Product product_one = Factory.Productfactory(PRODUCTTYPE.PRODUCTONE);
product_one.doSomeThing();
//需要产品SubProductTwo
Product product_two = Factory.Productfactory(PRODUCTTYPE.PRODUCTTWO);
product_two.doSomeThing();
}
}
/**
*总结:简单工厂模式是工厂模式的一种特例,简化版的工厂模式。简单工厂从某种程度上降低了项目的耦合度,是一种低耦合的效果,比方说我们客户端,也就是调用该类的地方,创建
*类不需要知道是如何创建的,只需要调用该类的实例可以了。不用简单工厂模式,一般的做法是创建该类的实例,也就是创建类对象,然后进行类的初始化工作,如果初始化工作比较多的话,
*会使得调用地方大量的冗余,更甚者是提高了耦合度。当然如果产品类比较多的话,使用简单工厂模式,每一次添加一个产品类别,都要修改一下创建方法,违背了设计模式中的开闭原则。
*优点:低耦合 ,提高了软件架构的模块化。
*缺点:不符合设计模式中的开闭原则,对添加开放,对修改关闭,不利于项目的可扩展性。
*/
*简单工厂模式 :
*简单工厂模式有三部分组成:1.抽象产品类;2.具体产品类;3.工厂类
*/
/**
* 枚举类型,作为工厂方法的参数,用来说明需要哪个产品
*/
enum PRODUCTTYPE {
PRODUCTONE, PRODUCTTWO
}
/**
*工厂类,用来生产具体的产片,根据给定的产品标志
*/
class Factory{
static Product Productfactory(PRODUCTTYPE type)
{
Product product = null;
switch (type) {
case PRODUCTONE:
product = new SubProductOne();
break;
case PRODUCTTWO:
product = new SubProductTwo();
default:
break;
}
return product;
}
}
/**
*产品抽象类
*/
interface Product{
// method
public void doSomeThing();
}
/**
*产品具体类2
*/
class SubProductOne implements Product{
// concrete method
public void doSomeThing(){
System.out.println("SubProductOne");
}
}
/**
*产品具体类2
*/
class SubProductTwo implements Product{
// concrete method
public void doSomeThing(){
System.out.println("SubProductTwo");
}
}
/**
*
* 客户端测试调用
*
*/
public class Pattern_01_SimpleFactory {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//需要产品SubProductOne
Product product_one = Factory.Productfactory(PRODUCTTYPE.PRODUCTONE);
product_one.doSomeThing();
//需要产品SubProductTwo
Product product_two = Factory.Productfactory(PRODUCTTYPE.PRODUCTTWO);
product_two.doSomeThing();
}
}
/**
*总结:简单工厂模式是工厂模式的一种特例,简化版的工厂模式。简单工厂从某种程度上降低了项目的耦合度,是一种低耦合的效果,比方说我们客户端,也就是调用该类的地方,创建
*类不需要知道是如何创建的,只需要调用该类的实例可以了。不用简单工厂模式,一般的做法是创建该类的实例,也就是创建类对象,然后进行类的初始化工作,如果初始化工作比较多的话,
*会使得调用地方大量的冗余,更甚者是提高了耦合度。当然如果产品类比较多的话,使用简单工厂模式,每一次添加一个产品类别,都要修改一下创建方法,违背了设计模式中的开闭原则。
*优点:低耦合 ,提高了软件架构的模块化。
*缺点:不符合设计模式中的开闭原则,对添加开放,对修改关闭,不利于项目的可扩展性。
*/