public class AMD implements Tehnologie{
private String nume;
public AMD(String nume)
{
this.nume=nume;
}
public String getTehnologieName()
{
return nume;
}
public String getTehnologieFeatures()
{
return "AMD Features";
}
}
...........................
import javax.swing.JApplet;
import javax.swing.JFrame;
public class Console {
public static void run(JApplet applet,int lung,int inalt)
{
JFrame frame=new JFrame("Abstract Factory");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,400);
frame.getContentPane().add(applet);
applet.init();
applet.start();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
............................
public class Desktop implements Portabilitate{
private String nume;
public Desktop(String nume)
{
this.nume=nume;
}
public String getPortabilitateName()
{
return nume;
}
public String getPortabilitateFeatures()
{
return "Desktop Features";
}
}
..........................
public class INTEL implements Tehnologie{
private String nume;
public INTEL(String nume)
{
this.nume=nume;
}
public String getTehnologieName()
{
return nume;
}
public String getTehnologieFeatures()
{
return "INTEL features";
}
}
..............................
public class Laptop implements Portabilitate{
private String nume;
public Laptop(String nume)
{
this.nume=nume;
}
public String getPortabilitateName()
{
return nume;
}
public String getPortabilitateFeatures()
{
return "Laptop Features";
}
}
.........................
public class PC1_Factory extends PCFactory{
public Portabilitate getPortabilitate()
{
return new Desktop("Port_Desktop");
}
public Tehnologie getTehnologie()
{
return new AMD("Tehn_AMD");
}
}
...............................
public class PC2_Factory extends PCFactory {
public Portabilitate getPortabilitate()
{
return new Laptop("Port_Laptop");
}
public Tehnologie getTehnologie()
{
return new INTEL("Tehn_Intel");
}
}
...............................
public abstract class PCFactory {
public static final String Desktop_PC = "Desktop";
public static final String Laptop_PC = "Laptop";
public static final String AMD_tech = "AMD";
public static final String INTEL_TEC = "INTEL";
public static int categ=0;
public abstract Portabilitate getPortabilitate();
public abstract Tehnologie getTehnologie();
public static PCFactory getPCFactory(String type)
{
System.out.println("\nType="+type);
if (type.equals(PCFactory.Desktop_PC))
return new PC1_Factory();
if(type.equals(PCFactory.AMD_tech))
return new PC1_Factory();
if (type.equals(PCFactory.Laptop_PC))
return new PC2_Factory();
if (type.equals(PCFactory.INTEL_TEC))
return new PC2_Factory();
return new PC1_Factory();
}
}
...............................
public interface Portabilitate {
public String getPortabilitateName();
public String getPortabilitateFeatures();
}
........................
public interface Tehnologie {
public String getTehnologieName();
public String getTehnologieFeatures();
}
.........................
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//aplicatia care foloseste aceste clase implementeaza un sistem
//de cautare PC dupa anumite criterii :categorie si tip
public class Test extends JApplet{
JPanel panel1,panel2,panel3,panel4;
JComboBox combo1;
JComboBox combo2;
JLabel label1,label2,label3;
JTextField text;
JButton search,exit;
Box box;
String searchResult=null;
public void init()
{
panel1=new JPanel(new FlowLayout());
//panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
panel2=new JPanel(new FlowLayout());
panel3=new JPanel(new FlowLayout());
panel4=new JPanel(new FlowLayout());
text=new JTextField(45);
text.setEditable(false);
text.setHorizontalAlignment(JTextField.CENTER);
//text.setBackground(C);
text.setText("Please click on Search Button");
label1=new JLabel("PC Category ");
label2=new JLabel("PC Type ");
label3=new JLabel("Search Result ");
box=Box.createVerticalBox();
Ascultator asc=new Ascultator();
combo1=new JComboBox(new String[]{"Desktop","Laptop","AMD","INTEL"});
combo2=new JComboBox(new String[]{"Portabilitate","Tehnologie"});
combo1.addActionListener(asc);
combo2.addActionListener(asc);
panel1.add(label1);
panel1.add(combo1);
panel2.add(label2);
panel2.add(combo2);
box.add(panel1);
box.add(Box.createVerticalStrut(25));
box.add(panel2);
box.add(Box.createVerticalStrut(25));
panel3.add(label3);
panel3.add(text);
search=new JButton("Search");
exit=new JButton("Exit");
search.addActionListener(asc);
exit.addActionListener(asc);
panel4.add(search);
panel4.add(exit);
getContentPane().add(box,BorderLayout.NORTH);
getContentPane().add(panel3,BorderLayout.CENTER);
getContentPane().add(panel4,BorderLayout.SOUTH);
}
public class Ascultator implements ActionListener {
public void actionPerformed(ActionEvent e) {
String s=e.getActionCommand();
if(s.equals("Exit"))
System.exit(0);
else
if(s.endsWith("Search"))
{
String pcCategory=(String)combo1.getSelectedItem();
String pcType=(String)combo2.getSelectedItem();
System.out.println("pcCategory: "+pcCategory);
System.out.println("pcType: "+pcType);
PCFactory factory=PCFactory.getPCFactory(pcCategory);
if(pcType.equals("Portabilitate"))
{
System.out.print("\nAm trecut pe aici\n");
searchResult="";
Portabilitate p=factory.getPortabilitate();
System.out.println("..."+p.getPortabilitateName()+"..");
if(p.getPortabilitateName().equals("Port_Desktop")
|| p.getPortabilitateName().equals("Port_Laptop"))
searchResult="Name: "+p.getPortabilitateName()+" "+p.getPortabilitateFeatures();
}
else
if(pcType.equals("Tehnologie"))
{
searchResult="";
Tehnologie tehnologie=factory.getTehnologie();
System.out.println("..."+tehnologie.getTehnologieName()+"..");
if(tehnologie.getTehnologieName().equals("Tehn_AMD") ||
tehnologie.getTehnologieName().equals("Tehn_Intel"))
searchResult="Name: "+tehnologie.getTehnologieName()+""+" "+tehnologie.getTehnologieFeatures();
}
text.setText(searchResult);
}
}
}
public static void main(String[] args) {
Console.run(new Test(),600,400);
}
}
Niciun comentariu:
Trimiteți un comentariu