5.抽象工厂模式-单例模式答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(4) 抽象工厂模式

电脑配件生产工厂生产内存、CPU等硬件设备,这些内存、CPU的品牌、型号并不一定相同,根据下面的“产品等级结构-产品族”示意图,使用抽象工厂模式实现电脑配件生产过程并绘制相应的类图,绘制类图并编程实现。

interface CPU

{

void discribe();

}

interface RAM

{

void discribe();

}

class PcCPU implements CPU

{

public void discribe()

{

System.out.println("PcCPU");

}

}

class MacCPU implements CPU

{

public void discribe()

{

System.out.println("MacCPU");

}

}

class PcRAM implements RAM

{

public void discribe()

{

System.out.println("PcRAM");

}

}

class MacRAM implements RAM

{

public void discribe()

{

System.out.println("MacRAM");

}

}

interface ComputerPartsFactory

{

CPU produceCPU();

RAM produceRAM();

}

class PcFactory implements ComputerPartsFactory

{

public PcCPU produceCPU() {

System.out.println("PcCPU produced!");

return new PcCPU();

}

public PcRAM produceRAM() {

System.out.println("PcRAM produced!");

return new PcRAM();

}

}

class MacFactory implements ComputerPartsFactory

{

public MacCPU produceCPU() {

System.out.println("MacCPU produced!");

return new MacCPU();

}

public MacRAM produceRAM() {

System.out.println("MacRAM produced!");

return new MacRAM();

}

}

class ComputerPartsClient

{

public static void main(String a[])

{

ComputerPartsFactory factory;

CPU cpu;

RAM ram;

factory=(ComputerPartsFactory)XMLUtil.getBean();//Pc OR Mac

cpu=factory.produceCPU();

cpu.discribe();

ram=factory.produceRAM();

ram.discribe();

}

}

(6) 单例模式

用懒汉式单例实现在某系统运行时,其登录界面类LoginForm只能够弹出一个,如果第二次实例化该类则提示“程序已运行”。绘制类图并编程实现。

class LoginForm extends JFrame{ //Java.swing包中的JFrame类用于创建窗口

private static LoginForm uniqueInstance=null;

private LoginForm()

{

//设置标题

this.setTitle("LoginForm");

this.setSize(400, 300); //setSize(int width, int height)

//设置关闭按钮的事件

this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

//设置是否可见

this.setVisible(true);

}

public static LoginForm getInstance()

{

if(uniqueInstance==null)

{

uniqueInstance=new LoginForm();

}else{

JOptionPane.showMessageDialog(null, "LoginFrame已经在运行!");

}

return uniqueInstance;

}

}

class LoginFormClient

{

public static void main(String a[])

{

LoginForm s1=null,s2=null;

s1=LoginForm.getInstance();

s2=LoginForm.getInstance();

System.out.println("s1==s2?");

System.out.println(s1==s2);

相关文档
最新文档