2024年10月java中抽象工厂模式和原型模式之间的区别?Java是什么东西

 更新时间:2024-10-12

  ⑴java中抽象工厂模式和原型模式之间的区别?Java是什么东西

  ⑵区别:工厂方法模式只有一个抽象产品类,每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例,抽象工厂模式的简介当每个抽象产品都有多于一个的具体子类的时候,有人做如下的比较:工厂方法模式:一个抽象产品类,工厂方法模式的具体工厂类只能创建一个具体产品类的实例,工厂方法模式提供的是对一个产品的等级模式,抽象工厂模式:多个抽象产品类,而抽象工厂方法提供的是对多个产品的等级模式。

  ⑶java中抽象工厂模式和原型模式之间的区别

  ⑷工厂模式的好处就在于将工厂和产品之间的耦合降低,将具体产品的构造过程放在了具体工厂类里面。在以后扩展产品的时候方便很多,只需要添加一个工厂类,一个产品类,就能方便的添加产品,而不需要修改原有的代码。而在简单工厂中,如果要增加一个产品,则需要修改工厂类,增加if/else分支,或者增加一个case分支,工厂模式符合软件开发中的OCP原则(opencloseprinciple,对扩展开放,对修改关闭。抽象工厂模式:这个模式我总是感觉和builder模式非常相似。工厂方法模式提供的是对一个产品的等级模式,,而抽象工厂方法提供的是对多个产品的等级模式,注意,这里的多个具体产品之间是相互耦合的,也就是说这里的抽象工厂提供的产品之间是存在某种联系的。有人做如下的比较:工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体产品类的实例。区别:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

  ⑸Java是一门编程语言,是一门连接人与计算机的语言,在我们的生活中,人与人之间需要交流,通常我们可以使用说话来进行交流,让别人理解我们所要表达的意思,而计算机能理解的就是编程语言,我们使用编程语言对计算机下达指令,让计算机完成我们想要的功能。近些年来,Java在编程语言排行榜上基本上一直位列前三,而且Java的使用人数也很多,Java的需求量也很大,主要原因也是在于Java的语法简单,上手比较快,而且Java是开源的,很多的人开发出很多开源的Java框架,开源的意义就是我们所有人都可以看到他们的源码,看到他们是如何写的,所以这个对于我们学习和开发都很方便。看完上面的内容,Java是什么你懂了吗?

  ⑹当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结构。

  ⑺求一个简单的Java小游戏的代码

  ⑻连连看的小源码packageLianliankan;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publilasslianliankanimplementsActionListener{JFramemainFrame;//主面板ContainerthisContainer;JPanelcenterPanel,southPanel,northPanel;//子面板JButtondiamondsButton=newJButton;//游戏按钮数组JButtonexitButton,resetButton,newlyButton;//退出,重列,重新开始按钮JLabelfractionLable=newJLabel(““);//分数标签JButtonfirstButton,secondButton;//分别记录两次被选中的按钮intgrid=newint;//储存游戏按钮位置staticbooleanpressInformation=false;//判断是否有按钮被选中intx=,y=,x=,y=,fristMsg=,secondMsg=,validateLV;//游戏按钮的位置坐标inti,j,k,n;//消除方法控制publicvoidinit(){mainFrame=newJFrame(“JKJ连连看“);thisContainer=mainFrame.getContentPane();thisContainer.setLayout(newBorderLayout());centerPanel=newJPanel();southPanel=newJPanel();northPanel=newJPanel();thisContainer.add(centerPanel,“Center“);thisContainer.add(southPanel,“South“);thisContainer.add(northPanel,“North“);centerPanel.setLayout(newGridLayout(,));for(intcols=;cols《;cols++){for(introws=;rows《;rows++){diamondsButton[cols][rows]=newJButton(String.valueOf(grid[cols+][rows+]));diamondsButton[cols][rows].addActionListener(this);centerPanel.add(diamondsButton[cols][rows]);}}exitButton=newJButton(“退出“);exitButton.addActionListener(this);resetButton=newJButton(“重列“);resetButton.addActionListener(this);newlyButton=newJButton(“再来一局“);newlyButton.addActionListener(this);southPanel.add(exitButton);southPanel.add(resetButton);southPanel.add(newlyButton);fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())));northPanel.add(fractionLable);mainFrame.setBounds(,,,);mainFrame.setVisible(true);}publicvoidrandomBuild(){intrandoms,cols,rows;for(inttwins=;twins《=;twins++){randoms=(int)(Math.random()*+);for(intalike=;alike《=;alike++){cols=(int)(Math.random()*+);rows=(int)(Math.random()*+);while(grid[cols][rows]!=){cols=(int)(Math.random()*+);rows=(int)(Math.random()*+);}this.grid[cols][rows]=randoms;}}}publicvoidfraction(){fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+));}publicvoidreload(){intsave=newint;intn=,cols,rows;intgrid=newint;for(inti=;i《=;i++){for(intj=;j《=;j++){if(this.grid[i][j]!=){save[n]=this.grid[i][j];n++;}}}n=n-;this.grid=grid;while(n》=){cols=(int)(Math.random()*+);rows=(int)(Math.random()*+);while(grid[cols][rows]!=){cols=(int)(Math.random()*+);rows=(int)(Math.random()*+);}this.grid[cols][rows]=save[n];n--;}mainFrame.setVisible(false);pressInformation=false;//这里一定要将按钮点击信息归为初始init();for(inti=;i《;i++){for(intj=;j《;j++){if(grid[i+][j+]==)diamondsButton[i][j].setVisible(false);}}}publicvoidestimateEven(intplaceX,intplaceY,JButtonbz){if(pressInformation==false){x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;pressInformation=true;}else{x=x;y=y;fristMsg=secondMsg;firstButton=secondButton;x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;if(fristMsg==secondMsg&&secondButton!=firstButton){xiao();}}}publicvoidxiao(){//相同的情况下能不能消去。仔细分析,不一条条注释if((x==x&&(y==y+||y==y-))||((x==x+||x==x-)&&(y==y))){//判断是否相邻remove();}else{for(j=;j《;j++){if(grid[x][j]==){//判断第一个按钮同行哪个按钮为空if(y》j){//如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边for(i=y-;i》=j;i--){//判断第二按钮左侧直到第一按钮中间有没有按钮if(grid[x][i]!=){k=;break;}else{k=;}//K=说明通过了第一次验证}if(k==){linePassOne();}}if(y《j){//如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边for(i=y+;i《=j;i++){//判断第二按钮左侧直到第一按钮中间有没有按钮if(grid[x][i]!=){k=;break;}else{k=;}}if(k==){linePassOne();}}if(y==j){linePassOne();}}if(k==){if(x==x){remove();}if(x《x){for(n=x;n《=x-;n++){if(grid[n][j]!=){k=;break;}if(grid[n][j]==&&n==x-){remove();}}}if(x》x){for(n=x;n》=x+;n--){if(grid[n][j]!=){k=;break;}if(grid[n][j]==&&n==x+){remove();}}}}}for(i=;i《;i++){//列if(grid[i][y]==){if(x》i){for(j=x-;j》=i;j--){if(grid[j][y]!=){k=;break;}else{k=;}}if(k==){rowPassOne();}}if(x《i){for(j=x+;j《=i;j++){if(grid[j][y]!=){k=;break;}else{k=;}}if(k==){rowPassOne();}}if(x==i){rowPassOne();}}if(k==){if(y==y){remove();}if(y《y){for(n=y;n《=y-;n++){if(grid[i][n]!=){k=;break;}if(grid[i][n]==&&n==y-){remove();}}}if(y》y){for(n=y;n》=y+;n--){if(grid[i][n]!=){k=;break;}if(grid[i][n]==&&n==y+){remove();}}}}}}}publicvoidlinePassOne(){if(y》j){//第一按钮同行空按钮在左边for(i=y-;i》=j;i--){//判断第一按钮同左侧空按钮之间有没按钮if(grid[x][i]!=){k=;break;}else{k=;}//K=说明通过了第二次验证}}if(y《j){//第一按钮同行空按钮在与第二按钮之间for(i=y+;i《=j;i++){if(grid[x][i]!=){k=;break;}else{k=;}}}}publicvoidrowPassOne(){if(x》i){for(j=x-;j》=i;j--){if(grid[j][y]!=){k=;break;}else{k=;}}}if(x《i){for(j=x+;j《=i;j++){if(grid[j][y]!=){k=;break;}else{k=;}}}}publicvoidremove(){firstButton.setVisible(false);secondButton.setVisible(false);fraction();pressInformation=false;k=;grid[x][y]=;grid[x][y]=;}publicvoidactionPerformed(ActionEvente){if(e.getSource()==newlyButton){intgrid=newint;this.grid=grid;randomBuild();mainFrame.setVisible(false);pressInformation=false;init();}if(e.getSource()==exitButton)System.exit();if(e.getSource()==resetButton)reload();for(intcols=;cols《;cols++){for(introws=;rows《;rows++){if(e.getSource()==diamondsButton[cols][rows])estimateEven(cols+,rows+,diamondsButton[cols][rows]);}}}publicstaticvoidmain(Stringargs){lianliankanllk=newlianliankan();llk.randomBuild();llk.init();}}//oldlines//newlines

您可能感兴趣的文章:

相关文章