关闭

工厂模式

201人阅读 评论(0) 收藏 举报
分类:

                                                                                                              工厂模式

   

    在设计模式中,一个类代表另一个类的功能,这种类型的模式称为结构性模式。在代理模式中,我们创建具有对象的对象,以便向外界提供功能接口。

 我们一般会在什么地方会用到呢?我们明确地计划不同条件下创建爱不同实例时而实现的代码的关键就创建过程在其子类执行

   根据UML类图来实现这些代码:


  

 定义接口

public interface Shape {
 void draw();
}

public class Circle implements Shape{

	public void draw()
	{
		System.out.println("Inside Circle::draw() method.");
	}
}

public class Rectangle implements Shape{

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		
		System.out.println("Inside Rectangele::draw() method.");
	}

}

public class Square implements Shape{

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		
		System.out.println("Inside Square::draw() method.");
	}

}
public class ShapeFactory {

  public Shape getShape(String shapeType)
  { 
	   if(shapeType == null)
	   {
	     return null;
	   }
	   if(shapeType.equalsIgnoreCase("CIRCLE")){
		   return new Circle();
	   }
	   else if(shapeType.equalsIgnoreCase("RECTANGLE")){
		   return new Rectangle();
	   } 
	   else if(shapeType.equalsIgnoreCase("SQUARE")){
		   return new Square();
	   }
	    return null;
		  
  }
}

public class FactoryPatterDemo {
   public static void main(String[] args)
   {
	   ShapeFactory  shapeFactory = new ShapeFactory();
	   
	   //  获取 Circle
	   Shape shape1 = ((ShapeFactory) shapeFactory).getShape("CIRCLE");
	  shape1.draw();
	  
	  Shape shape2 = ((ShapeFactory) shapeFactory).getShape("RECTANGLE");
	  shape2.draw();
	  
	  Shape shape3 = ((ShapeFactory) shapeFactory).getShape("SQUARE");
	  shape3.draw();
	  
	  
   }
}



   

  运行结果:

  






 

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18595次
    • 积分:792
    • 等级:
    • 排名:千里之外
    • 原创:55篇
    • 转载:7篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论