nic*_*wkc 0 java eclipse swing
我已经学习了2个月的java,我熟悉课程,继承以及一些关于摇摆的知识.我见过一些专家的编码风格,我对它有点不熟悉.例如:1)
import java.util.Calendar;
class testIni2{
public static void main(String args[]){
Calendar cal = Calendar.getInstance();
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DATE);
System.out.println("Today's date is" + month + " " + day );
}
}
Run Code Online (Sandbox Code Playgroud)
根据我之前的知识,如果你想创建一个类的实例,我见过的大部分风格如下:
Calendar cal = new Calendar();
Run Code Online (Sandbox Code Playgroud)
然后调用方法,在这种情况下我认为它是这样的:
cal.getInstance();
Run Code Online (Sandbox Code Playgroud)
我理解其余部分.这是否意味着我可以在创建类的实例时直接调用该方法?让我们说如果我有一个狗类,里面有一个叫做'bark'的方法,我可以这样做:
Dog cutie = Dog.bark(); // Like this??
Run Code Online (Sandbox Code Playgroud)
2)http://zetcode.com/tutorials/javaswingtutorial/firstprograms/
我从这个网站上读到了关于摇摆的教程,以及关于其编码风格的另一个问题.
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);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
就像我之前的问题一样,但这次他创建了另一种初始化方法,并在构造函数中调用它,我发现它有点令人困惑.我也看过Derek Bananas youtube教程,他写了这样的代码:
this.setTitle...
this.setSize...
Run Code Online (Sandbox Code Playgroud)
这意味着我也可以使用'this'.在initUI方法里面呢?
PS:如果你觉得我的问题是由于我缺乏学习,你能告诉我一些我可以谷歌的关键词吗?对不起,如果我的英语不好.谢谢.
你所看到的是工厂模式.班级作者(无论是谁写过日历)决定,无论出于何种原因,他们都不希望班级用户(在这种情况下,你)直接创建日历.
通常这是因为:
至于你的狗线:
Dog cutie = Dog.bark();
Run Code Online (Sandbox Code Playgroud)
bark()是一个返回狗的方法的坏名字 - 非常不直观.比方说,你的狗类很复杂 - 它有年龄,性别,品种,颜色和大小.每只狗必须拥有所有指定的.您可以通过实现DogFactory让开发人员更容易创建狗:
public class DogFactory {
public static Dog newDog() {
return new Dog(1, Sex.MALE, Breed.PUDLE, brown, 40);
}
}
Run Code Online (Sandbox Code Playgroud)
相关的设计模式将是构建器,其中使用构建器的代码可能如下所示:
Dog lassie = new DogBuilder().called("lassie").ofBreed(Breed.COLLIE).ofHeight(60).build();
Run Code Online (Sandbox Code Playgroud)
构建器的内部实现比工厂稍微复杂一些