资源描述
作业一(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
展开阅读全文