当前位置:首页 > 郑州大学软件学院设计模式
stu3=stu1.clone(); stu3.setStuName(\小龙女\ stu3.setStuSex(\女\ System.out.print(\姓名:\+ stu1.getStuName()); System.out.print(\,性别:\+ stu1.getStuSex()); System.out.print(\,年龄:\+ stu1.getStuAge()); System.out.print(\,专业:\+ stu1.getStuMajor()); System.out.print(\,学院:\+ stu1.getStuCollege()); System.out.print(\,学校:\+
stu1.getStuUniversity()); System.out.println(); System.out.print(\姓名:\+ stu2.getStuName()); System.out.print(\,性别:\+ stu2.getStuSex()); System.out.print(\,年龄:\+ stu2.getStuAge()); System.out.print(\,专业:\+ stu2.getStuMajor()); System.out.print(\,学院:\+ stu2.getStuCollege()); System.out.print(\,学校:\+
stu2.getStuUniversity()); System.out.println(); System.out.print(\姓名:\+ stu3.getStuName()); System.out.print(\,性别:\+ stu3.getStuSex()); System.out.print(\,年龄:\+ stu3.getStuAge()); System.out.print(\,专业:\+ stu3.getStuMajor()); System.out.print(\,学院:\+ stu3.getStuCollege()); System.out.print(\,学校:\+
stu3.getStuUniversity());
System.out.println(); } }
原型管理器
import java.util.*;
interface MyColor extends Cloneable { public Object clone(); public void display(); }
class Red implements MyColor {
public Object clone() {
Red r=null; try {
r=(Red)super.clone(); }
catch(CloneNotSupportedException e) { }
return r; }
public void display() {
System.out.println(\ } }
class Blue implements MyColor {
public Object clone() {
Blue b=null; try {
b=(Blue)super.clone(); }
catch(CloneNotSupportedException e) {
}
return b; }
public void display() {
System.out.println(\ } }
class PrototypeManager {
private Hashtable ht=new Hashtable();
public PrototypeManager() {
ht.put(\ ht.put(\ }
public void addColor(String key,MyColor obj) {
ht.put(key,obj); }
public MyColor getColor(String key) {
return
(MyColor)((MyColor)ht.get(key)).clone(); } }
class Client {
public static void main(String args[]) {
PrototypeManager pm=new PrototypeManager();
MyColor
obj1=(MyColor)pm.getColor(\ obj1.display();
MyColor
obj2=(MyColor)pm.getColor(\ obj2.display();
System.out.println(obj1==obj2); } }
单例模式
实例一:身份证号码
在现实生活中,居民身份证号码具有唯一性,同一个人不允许有多个身份证号码,第一次申请身份证时将给居民分配一个身份证号码,如果之后因为遗失等原因补办时,还是使用原来的身份证号码,不会产生新的号码。现使用单例模式模拟该场景。 public class Client { public static void main(String a[]) { IdentityCardNo no1,no2; no1=IdentityCardNo.getInstance(); no2=IdentityCardNo.getInstance(); System.out.println(\身份证号码是否一致:\
String str1,str2;
str1=no1.getIdentityCardNo(); str2=no1.getIdentityCardNo();
System.out.println(\第一次号码:\str1);
System.out.println(\第二次号码:\str2);
System.out.println(\内容是否相等:\+ str1.equalsIgnoreCase(str2));
System.out.println(\是否是相同对象:\ } }
public class IdentityCardNo { private static IdentityCardNo
instance=null; private String no; private IdentityCardNo() { } public static IdentityCardNo getInstance() { if(instance==null) { System.out.println(\第一次办理身份证,分配新号码!\ instance=new IdentityCardNo();
instance.setIdentityCardNo(\2\ } else { System.out.println(\重复办理身份证,获取旧号码!\ } return instance; } private void setIdentityCardNo(String no) { this.no=no; } public String getIdentityCardNo() { return this.no; } }
实例二:打印池 在操作系统中,打印池(Print Spooler)是一个用于管理打印任务的应用程序,通过打印池用户可以删除、中止或者改变打印任务的优先级,在一个系统中只允许运行一个打印池
对象,如果重复创建打印池则抛出异常。现使用单例模式来模拟实现打印池的设计。 public class Client { public static void main(String a[]) { PrintSpoolerSingleton ps1,ps2; try {
ps1=PrintSpoolerSingleton.getInstance(); ps1.manageJobs(); } catch(PrintSpoolerException e) {
System.out.println(e.getMessage()); }
System.out.println(\ try {
ps2=PrintSpoolerSingleton.getInstance(); ps2.manageJobs(); } catch(PrintSpoolerException e) {
System.out.println(e.getMessage()); } } }
public class PrintSpoolerException extends Exception { public PrintSpoolerException(String message) { super(message); } }
public class PrintSpoolerSingleton { private static PrintSpoolerSingleton instance=null; private PrintSpoolerSingleton() { } public static PrintSpoolerSingleton getInstance() throws PrintSpoolerException { if(instance==null) { System.out.println(\创建打印池!\ instance=new PrintSpoolerSingleton(); } else { throw new PrintSpoolerException(\打印池正在工作中!\ } return instance; } public void manageJobs() { System.out.println(\管理打印任务!\ } } 其他
public class Singleton { private static Singleton instance = null; private Singleton() { } public static Singleton getInstance()
{ if(instance==null)
instance=new Singleton();
return instance;
}
}
外观模式
实例一:电源总开关
现在考察一个电源总开关的例子,以便进一步说明外观模式。为了使用方便,一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。通过该电源总开关可以同时控制上述所有电器设备,使用外观模式设计该系统。 public class AirConditioner { public void on() { System.out.println(\空调打开!\ } public void off() { System.out.println(\空调关闭!\ } }
public class Client { public static void main(String args[]) { GeneralSwitchFacade gsf=new GeneralSwitchFacade(); gsf.on(); System.out.println(\ gsf.off(); }
}public class Fan {
共分享92篇相关文档