这是OO编程的错误做法吗?

时间:2016-07-23 06:49:17

标签: java

我正在为我的api重写一个绘图处理程序。对于我的PaintManager类结构,这是不正确的OO练习还是没问题?我觉得这是正确的,但我想要一些第二意见。

忽略Background类中的高度和位置值。 :P

enter image description here

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:8)

这不是一种不正确的做法。此外,无论您在此处实施的是什么,都像战略设计模式

战略模式说 捕获接口中的抽象,将实现细节隐藏在派生类中。

Strategy Design Pattern

source

答案 1 :(得分:0)

由于您有PaintManager,我假设您将有很多实现Paintable的类。尽量让你的课程尽可能通用,以避免写太多课程。

例如,如果您创建了class Square extends Paintable,则代码中的差异将是最小的。

public class Square extends Paintable {
    // the x position
    private int x;

    // the y position
    private int y;

    // the width
    private int w;

    // the height
    private int h;

    // the color
    private Color color;

    public Square(int x, int y, int w, int h, Color color) {
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;
        this.color = color;
    }

    // draw method
    public void draw(Graphics g) {
        g.setColor(color.getCOLOR());
        g.drawRect(x, y, w, h);
        g.fillRect(x, y, w, h);
    }
}

背景可以是更一般的类的对象。

阅读Difference between an object and a class了解更多详情