一起学Java设计模式--简单工厂模式(不在23中设计模式之内)
2014-04-03 16:49
866 查看
(1) 简单工厂模式
使用简单工厂模式设计一个可以创建不同几何形状(Shape)的绘图工具类,如可创建圆形(Circle)、方形(Rectangle)和三角形(Triangle) 对象,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnsupportedShapeException,绘制类图并编程实现。
运行结果:
使用简单工厂模式设计一个可以创建不同几何形状(Shape)的绘图工具类,如可创建圆形(Circle)、方形(Rectangle)和三角形(Triangle) 对象,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnsupportedShapeException,绘制类图并编程实现。
//抽象图形 public interface Shape{ void draw(); void erase(); } public class Circle implements Shape{ public void draw(){ System.out.println("Circle draw!"); } public void erase(){ System.out.println("Circle erasing!"); } } public class Rectangle implements Shape{ public void draw(){ System.out.println("Rectangle draw!"); } public void erase(){ System.out.println("Rectangle erasing!"); } } public class Triangle implements Shape{ public void draw(){ System.out.println("Triangle draw!"); } public void erase(){ System.out.println("Triangle erasing!"); } } //工厂 import java.lang.*; public class ShapeFactory{ public static Shape produceShape(String shapeName) throws UnsupportedShapeException{ if(shapeName.equals("circle")){ return new Circle(); }else if(shapeName.equals("rectangle")){ return new Rectangle(); }else if(shapeName.equals("triangle")){ return new Triangle(); }else{ throw new UnsupportedShapeException(); } } } class UnsupportedShapeException extends Exception{ public String toString(){ return "绘制不支持该几何图形!"; } } public class ShapeClient{ public static void main(String[] args){ Shape circle = null; Shape rectangle = null; Shape triangle = null; Shape diamond = null; try{ circle = ShapeFactory.produceShape("circle"); rectangle = ShapeFactory.produceShape("rectangle"); triangle = ShapeFactory.produceShape("triangle"); circle.draw(); circle.erase(); rectangle.draw(); rectangle.erase(); triangle.draw(); triangle.erase(); }catch(UnsupportedShapeException e){ e.printStackTrace(); } try{ diamond = ShapeFactory.produceShape("diamond"); diamond.draw(); diamond.erase(); }catch(UnsupportedShapeException e){ e.printStackTrace(); } } }
运行结果:
相关文章推荐
- 一起学Java设计模式--工厂方法模式(不在23种设计模式之内)
- 229_尚学堂_高淇_java300集最全视频教程_【GOF23设计模式】_简单工厂模式详解
- Java 的23 种设计模式
- 设计模式(java)——简单工厂模式
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- 226_尚学堂_高淇_java300集最全视频教程_【GOF23设计模式】_单例模式_应用场景_饿汉式_懒汉式
- java设计模式初步摸索(简单工厂模式)
- Java设计模式之简单工厂模式
- java设计模式(1):简单工厂模式(Simple Factory)
- Java经典23结构模型的设计模式(三)------附加代理模式、适配器型号、Facade模式的差异
- 【GOF23设计模式】_代理模式_静态代理_动态代理_开发场景JAVA236-237
- java开发中的23中设计模式详解<转>
- Java 设计模式之简单工厂模式的详解(创建模式)
- Java-设计模式-工厂模式浅谈(一)-简单工厂模式
- java23中设计模式级解释代码
- Java中23中设计模式
- 【GOF23设计模式】_责任链模式_公文审批_供应链系统的采购审批_异常链_过滤器和拦截器调用过程JAVA243
- Java设计模式之“简单工厂模式”
- Java开发23中设计模式
- java于23设计模式