SQnote
永远有多远……
SQnote - java,web优化,python,(www.sqnote.cn)
  2005-10-5――――――――――――――――――――――――――――――――――

1. 工厂模式主要有以下几种形态

  •          简单工厂(sample Factory)模式
  •          工厂方法(Factory Method)模式
  •          抽象工厂(Abstract Factory)模式 

1.1    简单工厂(sample Factory)模式 

例题(1.1)请使用简单工厂模式设计一个创建不同几何形状,如圆形,方形和三角形实例的描图员(Art Tracer)系统。每个几何图形都要有画出draw()个方法。 当描图员接到指令,要求创建不支持的几何图形时,要提出BadShapeException 异常。 

工厂类:

package cn.sqsoft.javapatterns.simplefactory; 

/**

 * @author 宝剑·123钢铁·123steel.cn

 *

 */

public class ArtTracer

{ 

       public static Shape createShape(String which) throws BadShapeException

       {

              if(which.equalsIgnoreCase("Circle"))

              {

                     return new Circle();

              }

              else if(which.equalsIgnoreCase("Square"))

              {

                     return new Square();

              }

              else

              {

                     throw new BadShapeException(which);

              }

       }

}

 

抽象类:

package cn.sqsoft.javapatterns.simplefactory; 

/**

 * @author 宝剑·123钢铁·123steel.cn

 *

 */

public interface Shape

{

       void draw();

}

 

具体类:

package cn.sqsoft.javapatterns.simplefactory; 

/**

 * @author 宝剑·123钢铁·123steel.cn

 *

 */

public class Circle implements Shape

{    

       public void draw()

       {

              System.out.println("draw circle");

       }

}

 

package cn.sqsoft.javapatterns.simplefactory; 

/**

 * @author 宝剑·123钢铁·123steel.cn

 *

 */

public class Square implements Shape

 {   

       public void draw()

       {

              System.out.println("draw Square");

 

       }

} 

辅助类:

package cn.sqsoft.javapatterns.simplefactory; 

/**

 * @author 宝剑·123钢铁·123steel.cn

 *

 */

public class BadShapeException extends Exception

{

       public BadShapeException(String msg)

       {

              super(msg);          

       }

}

 

测试类:

package cn.sqsoft.javapatterns.simplefactory; 

/**

 * @author 宝剑·123钢铁·123steel.cn

 *

 */

public class Test

{    

       public static void main(String[] args) throws BadShapeException

       {

              try

              {

                     ArtTracer.createShape("Circle").draw();

                     ArtTracer.createShape("Square").draw();

                     //ArtTracer.createShape("Hello").draw();

              }

              catch(BadShapeException e)

              {

                     System.out.println(e);

              }

       }

}

posted on 2005-10-06 00:47  SQnote·www.SQnote.cn  阅读(330)  评论(1)    收藏  举报