关于java编码风格的几个问题
我学习java已经有2个月了,我对类、继承和swing都很熟悉。 我见过一些专家的编码风格,我确实觉得有点不熟悉。 例如: (一) 根据我之前的知识,如果您想创建一个类的Instance,我看到的大多数样式如下所示:关于java编码风格的几个问题,java,eclipse,swing,Java,Eclipse,Swing,我学习java已经有2个月了,我对类、继承和swing都很熟悉。 我见过一些专家的编码风格,我确实觉得有点不熟悉。 例如: (一) 根据我之前的知识,如果您想创建一个类的Instance,我看到的大多数样式如下所示: Calendar cal = new Calendar(); 在调用方法之后,在本例中,我认为是这样的: cal.getInstance(); Dog cutie = Dog.bark(); // Like this?? this.setTitle...
Calendar cal = new Calendar();
在调用方法之后,在本例中,我认为是这样的:
cal.getInstance();
Dog cutie = Dog.bark(); // Like this??
this.setTitle...
this.setSize...
Dog lassie = new DogBuilder().called("lassie").ofBreed(Breed.COLLIE).ofHeight(60).build();
剩下的我都明白了。这是否意味着在创建类的实例时可以直接调用该方法?假设我有一个dog类,其中有一个名为“bark”的方法,我可以这样做:
cal.getInstance();
Dog cutie = Dog.bark(); // Like this??
this.setTitle...
this.setSize...
Dog lassie = new DogBuilder().called("lassie").ofBreed(Breed.COLLIE).ofHeight(60).build();
(二)
我在这个网站上读了一篇关于swing的教程,还有一个关于它的编码风格的问题
import java.awt.EventQueue;
import javax.swing.JFrame;
public class SimpleEx extends JFrame {
public SimpleEx() {
initUI();
}
private void initUI() {
setTitle("Simple example");
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
SimpleEx ex = new SimpleEx();
ex.setVisible(true);
}
});
}
}
和我前面的问题一样,但这次他创建了另一个初始化方法,并在构造函数中调用它,这让我觉得有点困惑。我也看过Derek的youtube教程,他写的代码如下:
cal.getInstance();
Dog cutie = Dog.bark(); // Like this??
this.setTitle...
this.setSize...
Dog lassie = new DogBuilder().called("lassie").ofBreed(Breed.COLLIE).ofHeight(60).build();
这意味着我也可以在initUI方法中使用“this.”
如果你觉得我的问题是因为我缺乏学习,你能告诉我一些我可以用谷歌搜索的关键词吗?对不起,如果我的英语不好。谢谢你。你看到的是。类作者(编写日历的人)决定,无论出于何种原因,他们都不希望类的用户(在本例中是您)直接创建日历
这通常是因为:
Dog cutie = Dog.bark();
对于返回dog(非常不直观)的方法来说,bark()是个坏名字。
比如说,你的狗的种类非常复杂——它有年龄、性别、品种、颜色和大小。
每只狗都必须有所有指定的。
通过实现DogFactory,开发者可以更轻松地创建狗:
public class DogFactory {
public static Dog newDog() {
return new Dog(1, Sex.MALE, Breed.PUDLE, brown, 40);
}
}
一个相关的设计模式是,使用生成器的代码可以如下所示:
cal.getInstance();
Dog cutie = Dog.bark(); // Like this??
this.setTitle...
this.setSize...
Dog lassie = new DogBuilder().called("lassie").ofBreed(Breed.COLLIE).ofHeight(60).build();
构建器的内部实现比工厂稍微复杂一些,您看到的是。类作者(编写日历的人)决定,无论出于何种原因,他们都不希望类的用户(在本例中是您)直接创建日历
这通常是因为:
Dog cutie = Dog.bark();
对于返回dog(非常不直观)的方法来说,bark()是个坏名字。
比如说,你的狗的种类非常复杂——它有年龄、性别、品种、颜色和大小。
每只狗都必须有所有指定的。
通过实现DogFactory,开发者可以更轻松地创建狗:
public class DogFactory {
public static Dog newDog() {
return new Dog(1, Sex.MALE, Breed.PUDLE, brown, 40);
}
}
一个相关的设计模式是,使用生成器的代码可以如下所示:
cal.getInstance();
Dog cutie = Dog.bark(); // Like this??
this.setTitle...
this.setSize...
Dog lassie = new DogBuilder().called("lassie").ofBreed(Breed.COLLIE).ofHeight(60).build();
构建器的内部实现比工厂没有公共构造函数稍微复杂一些。是的,你可以在任何实例方法中使用
这个。
你要找的是所谓的“静态方法”代码>简短的回答是否,除非方法bark()是静态的,并且还返回Dog类的实例,否则不能。没有公共构造函数。是的,你可以在任何实例方法中使用这个。
你要找的是所谓的“静态方法”代码>简短的回答是否定的,除非方法bark()是静态的,并且还返回Dog类的实例,否则不能这样做。如果您在他的行Dog cutie=Dog.bark()中添加注释会更好代码>:)谢谢你。第二个也是工厂模式吗?“我认为这一切都是关于设计模式的,对吗?”@nicklowkc-我不太明白你所说的“第二个”到底是什么意思。请你详细说明一下好吗?如果你在他的台词上加一条注释就更好了Dog cutie=Dog.bark()代码>:)谢谢你。第二个也是工厂模式吗?“我认为这一切都是关于设计模式的,对吗?”@nicklowkc-我不太明白你所说的“第二个”到底是什么意思。你能详细说明一下吗?