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() ;
}
}
相信坚持的力量,日复一日的习惯.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)