收藏 分销(赏)

设计模式程序.docx

上传人:仙人****88 文档编号:11825054 上传时间:2025-08-14 格式:DOCX 页数:11 大小:22.96KB 下载积分:10 金币
下载 相关 举报
设计模式程序.docx_第1页
第1页 / 共11页
设计模式程序.docx_第2页
第2页 / 共11页


点击查看更多>>
资源描述
作业一(1):工厂方法模式 AmdCPU.java: public class AmdCPU implements CPU { public void play() { System.out.println("AmdCPU生产中...."); } } AmdCPUFactory.java: public class AmdCPUFactory implements CPUFactory { public CPU productCPU() { System.out.println("AmdCPU工厂生产AmdCPU。"); return new AmdCPU(); } } Client .java: public class Client { public static void main(String args[]) { try{ CPU cpu; CPUFactory factory; factory=(CPUFactory)XMLUtil.getBean(); cpu=factory.productCPU(); cpu.play(); } catch(Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); } } } CPU.java: public interface CPU { public void play(); } CPUFactory.java: public interface CPUFactory { public CPU productCPU();} IntelCPU.java: public class IntelCPU implements CPU { public void play() { System.out.println("IntelCPU生产中...."); } } IntelCPUFactory .java: public class IntelCPUFactory implements CPUFactory { public CPU productCPU() { System.out.println("IntelCPU工厂生产IntelCPU。"); return new IntelCPU(); } } XMLUtil.java: import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import java.lang.*; public class XMLUtil { public static Object getBean() { try { DocumentBuilderFactory dFactory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=dFactory.newDocumentBuilder(); Document doc; doc=builder.parse(new File("config.xml")); NodeList nl=doc.getElementsByTagName("className"); Node classNode=nl.item(0).getFirstChild(); String cName=classNode.getNodeValue(); Class c=Class.forName("exe1_1."+cName); Object obj=c.newInstance(); return obj; } catch(Exception e) { e.printStackTrace(); return null; } } } 作业一(2):抽象工厂模式 AmdCPU.java: public class AmdCPU implements CPU { public void play() { System.out.println("AmdCPU生产中...."); } } AmdFactory .java: public class AmdFactory implements EFactory { public CPU productCPU() { return new AmdCPU(); } public Memory productMemoryBank() { return new AmdMemory(); } } AmdMemory.java: public class AmdMemory implements Memory { public void produce() { System.out.println("Amd内存条生产中...."); } } Client.java: public class Client { public static void main(String args[]) { try { CPU cpu; EFactory factory; Memory me; factory=(EFactory)XMLUtil.getBean(); cpu=factory.productCPU(); cpu.play(); me=factory.productMemoryBank(); me.produce(); } catch(Exception e) { e.printStackTrace(); } } } CPU.java: public interface CPU { public void play(); } EFactory.java: public interface EFactory { public CPU productCPU(); public Memory productMemoryBank(); } IntelCPU.java: public class IntelCPU implements CPU { public void play() { System.out.println("IntelCPU生产中...."); } } IntelFactory.java: public class IntelFactory implements EFactory { public CPU productCPU() { return new IntelCPU(); } public Memory productMemoryBank() { return new IntelMemory(); } } IntelMemory.java: public class IntelMemory implements Memory { public void produce() { System.out.println("Intel内存条生产中...."); } } Memory.java: public interface Memory { public void produce(); } XMLUtil.java: import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class XMLUtil { public static Object getBean() { try { DocumentBuilderFactory dFactory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=dFactory.newDocumentBuilder(); Document doc; doc=builder.parse(new File("config.xml")); NodeList nl=doc.getElementsByTagName("className"); Node classNode=nl.item(0).getFirstChild(); String cName=classNode.getNodeValue(); Class c=Class.forName("exe1_2."+cName); Object obj=c.newInstance(); return obj; } catch(Exception e) { e.printStackTrace(); return null; } } } 作业六:观察者模式 Client.java: public class Client { public static void main(String args[]) { SeekJobCenter center=new SeekJobCenter(); University ZhangLin=new University(center,"a.txt"); Master WangHao=new Master(center,"b.txt"); center.giveNewMess("三菱公司需要15个前端开发设计师。"); center.notifyObservers(); center.giveNewMess("宫崎骏公司需要2个动画设计师。"); center.notifyObservers(); center.giveNewMess("美的公司需要5个电工。"); center.notifyObservers(); center.giveNewMess("格力公司需要10个电工。"); center.notifyObservers(); } } Master.java: import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class Master implements Observer { Subject subject; File myFile; Master(Subject subject,String fileName) { this.subject=subject; subject.addObserver(this); myFile=new File(fileName); } public void hearTelephone(String heardMess) { try{ boolean boo=heardMess.contains("前端开发设计师")||heardMess.contains("软件"); if(boo){ RandomAccessFile out=new RandomAccessFile(myFile,"rw"); out.seek(out.length()); byte []b=heardMess.getBytes(); out.write(b); System.out.println(); System.out.print("我是一个研究生,"); System.out.print("我向文件"+myFile.getName()+"写入如下内容:"); System.out.print(heardMess);} else{ System.out.println(); System.out.println("我是研究生,这次的信息中没有我需要的信息"); } }catch(IOException exp){ System.out.println(exp.toString()); } } } Observer.java: public interface Observer { public void hearTelephone(String heardMess); } SeekJobCenter.java: import java.util.ArrayList; public class SeekJobCenter implements Subject { String mess; boolean changed; ArrayList<Observer> personList; SeekJobCenter() { personList=new ArrayList<Observer>(); mess=""; changed=false; } public void addObserver(Observer o) { if(!(personList.contains(o))) personList.add(o); } public void deleteObserver(Observer o) { if(!(personList.contains(o))) personList.remove(o); } public void notifyObservers() { if(changed) { for(int i=0;i<personList.size();i++) { Observer observer=personList.get(i); observer.hearTelephone(mess); } changed=false; } } public void giveNewMess(String str) { if(str.equals(mess)) changed=false; else { mess=str; changed=true; } } } Subject.java: public interface Subject { public void addObserver(Observer o); public void deleteObserver(Observer o); public void notifyObservers(); } University.java: import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; public class University implements Observer { Subject subject; File myFile; University(Subject subject,String fileName) { this.subject=subject; subject.addObserver(this); myFile=new File(fileName); } public void hearTelephone(String heardMess) { try { RandomAccessFile out=new RandomAccessFile(myFile,"rw"); out.seek(out.length()); byte []b=heardMess.getBytes(); out.write(b); System.out.println(); System.out.print("我是一个大学生,"); System.out.print("我向文件"+myFile.getName()+"写入如下内容:"); System.out.print(heardMess); } catch(IOException exp) { System.out.println(exp.toString()); } } } 作业七:策略模式 BookCart.java: import java.util.ArrayList; class BookCart { private ArrayList<BookOrder> list=new ArrayList(); public void addBookOrder(BookOrder order) { list.add(order); } public void deleteBookOrder(BookOrder order) { list.remove(order); } public double payBill() { System.out.println("-------------阿毛书店,谢谢光临!---------------"); double totalMoney=0; for(int i=0;i<list.size();i++){ totalMoney+=list.get(i).getOrderMoney(); } System.out.println("您一共需要支付:"+totalMoney+"元。"); return totalMoney; } } BookOrder.java: public class BookOrder { private int bookID; private String type; private double price; private int amount; private Discount strategy; public BookOrder(int bookID,String type,double price,int amount) { super(); this.bookID=bookID; this.type=type; this.price=price; this.amount=amount; this.setDiscountStrategy(); } public int getBookID() { return bookID; } public void setBookID(int bookID) { this.bookID=bookID; } public String getType() { return type; } public void setType(String type) { this.type=type; } public double getPrice() { return price; } public void setPrice(double price) { this.price=price; } public int getAmount() { return amount; } public void setAmount(int amount) { this.amount=amount; } public void setDiscountStrategy() { if(this.type.equals("coumputer")) { this.strategy=new ComputerBookDiscount(); } else if(this.type.equals("language")) { this.strategy=new LanguageBookDiscount(); } else if(this.type.equals("novel")) { this.strategy=new NovelBookDiscount(); } else { this.strategy=new NullDiscount(); } } public double getOrderMoney() { double bill=pute(this.amount,this.price); System.out.println("书:"+this.bookID+"\t"+this.type+"类\t共:"+this.amount+"本,\t单价为:" +this.price+"\t原价为:"+this.price*this.amount+"\t打折后为:"+bill); return bill; } } Client .java: public class Client { public static void main(String[] args) { BookCart cart=new BookCart(); BookOrder order1=new BookOrder(1001,"ComputerBook",33.00,10); BookOrder order2=new BookOrder(1002,"LanguageBook",12.00,10); BookOrder order3=new BookOrder(1003,"NovelBook",18.00,10); cart.addBookOrder(order1); cart.addBookOrder(order2); cart.addBookOrder(order3); cart.payBill(); } } ComputerBookDiscount.java: class ComputerBookDiscount extends Discount { public double compute(int amount,double price) { return amount*price*0.9; } } Discount .java: abstract class Discount { public abstract double compute(int amount,double price); } LanguageBookDiscount.java: class LanguageBookDiscount extends Discount { public double compute(int amount,double price) { return amount*price-amount*2; } } NovelBookDiscount.java: public class NovelBookDiscount extends Discount { public double compute(int amount,double price) { return amount*price-(amount*price/100)*10; } } NullDiscount.java: public class NullDiscount extends Discount { public double compute(int amount,double price) { return amount*price; } } 11
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服