9.19 绘制图形
demo1.用工厂设计模型,封装实现绘制,圆形,三角形
在整体设计中绘图是一个公共的标准,这样就需要通过接口来描述,而后不同的图形实现此标准后完善各自的功能就可以实现统一的处理结构,
本课程主要模拟一个绘图的操作形式讲解了接口以及工厂类的应用
interface IGraphical { // 定义绘图标准
public void paint() ; // 绘图
}
class Point {
private double x ;
private double y ;
public Point(double x,double y) {
this.x = x ;
this.y = y ;
}
public double getX() {
return this.x ;
}
public double getY() {
return this.y ;
}
}
class Triangle implements IGraphical { // 绘制三角形
private Point [] x ; // 保存第一条边的坐标---zb:第一个点坐标数组
private Point [] y ; // 保存第二条边的坐标---zb:第二个点坐标数组
private Point [] z ; // 保存第三条边的坐标
public Triangle(Point [] x,Point [] y , Point [] z) {
this.x = x ;
this.y = y ;
this.z = z ;
}
public void paint() {
System.out.println("绘制第一条边,开始坐标:[" + this.x[0].getX() + "," + this.x[0].getY() +"],结束坐标:[" + this.x[1].getX() + "," + this.x[1].getY() +"]" ) ;
System.out.println("绘制第二条边,开始坐标:[" + this.y[0].getX() + "," + this.y[0].getY() +"],结束坐标:[" + this.y[1].getX() + "," + this.y[1].getY() +"]" ) ;
System.out.println("绘制第三条边,开始坐标:[" + this.z[0].getX() + "," + this.z[0].getY() +"],结束坐标:[" + this.z[1].getX() + "," + this.z[1].getY() +"]" ) ;
}
}
class Circular implements IGraphical {
private double radius ;
public Circular(double radius) {
this.radius = radius ;
}
public void paint() {
System.out.println("以半径为“" + this.radius + "”绘制圆形。") ;
}
}
// 工厂设计模式!!!!
class Factory {
public static IGraphical getInstance(String className,double ... args) {//---- 这里IGraphical含义,数据类型???????
if("triangle".equalsIgnoreCase(className)) {
return new Triangle(
new Point[] {
new Point(args[0],args[1]) , new Point(args[2],args[3])} ,
new Point[] {
new Point(args[4],args[5]),new Point(args[6],args[7])} ,
new Point[] {
new Point(args[8],args[9]),new Point(args[10],args[11])}
) ;
} else if("circular".equalsIgnoreCase(className)) {
return new Circular(args[0]) ;
} else {
return null ;
}
}
}
public class HelloWorld {
public static void main(String args[]) {
IGraphical iga = Factory.getInstance("triangle",1.1,2.2,3.3,4.4,11.11,22.22,33.33,
44.44,111.111,222.222,333.333,444.444) ;
iga.paint() ;
IGraphical igb = Factory.getInstance("circular",88.11) ;
igb.paint() ;
}
}
相信坚持的力量,日复一日的习惯.