1.目标(Target) : ThreeElectricOutlet.java public interface ThreeElectricOutlet{
public abstract void connectElectricCurrent(); }
2.被适配者(Adaptee): TwoElectricOutlet.java
public interface TwoElectricOutlet{
public abstract void connectElectricCurrent(); }
3.适配器(Adapter) TreeElectricAdapter.java
public class TreeElectricAdapter implements ThreeElectricOutlet{ TwoElectricOutlet outlet;
TreeElectricAdapter(TwoElectricOutlet outlet){ this.outlet=outlet; }
public void connectElectricCurrent(){ outlet.connectElectricCurrent(); } }
4.应用 Application.java_1 public class Application{
public static void main(String args[]){ ThreeElectricOutlet outlet;
Wash wash=new Wash(); outlet=wash;
System.out.println(\使用三相插座接通电流:\ outlet.connectElectricCurrent();
TV tv=new TV();
TreeElectricAdapter adapter=new TreeElectricAdapter(tv); outlet=adapter;
System.out.println(\使用三相插座接通电流:\ outlet.connectElectricCurrent(); } }
4.应用 Application.java_2
class Wash implements ThreeElectricOutlet{ String name; Wash(){
name=\黄河洗衣机\ }
Wash(String s){ name=s;
}
public void connectElectricCurrent(){ turnOn(); }
public void turnOn(){
System.out.println(name+\开始洗衣物。\ } }
4.应用 Application.java_3
class TV implements TwoElectricOutlet{ String name; TV(){
name=\长江电视机\ }
TV(String s){ name=s; }
public void connectElectricCurrent(){ turnOn(); }
public void turnOn(){
System.out.println(name+\开始播放节目。\ } }
———————————————————————————————————————
外观模式
模式的结构中包括两种角色: 子系统(Subsystem) 外观(Facade)
1.子系统(Subsystem)_1 : CheckWord.java public class CheckWord{
public final int basicAmount=85; String advertisement; int amount;
public CheckWord(String advertisement){ this.advertisement=advertisement; }
public void setChargeAmount(){
amount=advertisement.length()+basicAmount; //计算出计费字符数目 }
public int getAmount(){ return amount; } }
1.子系统(Subsystem)_2 : Charge.java public class Charge{
public final int basicCharge=12; CheckWord checkWord;
Charge(CheckWord checkWord){ this.checkWord=checkWord; }
public void giveCharge(){
int charge=checkWord.getAmount()*basicCharge; System.out.println(\广告费用:\元\ } }
1.子系统(Subsystem)_3 :TypeSeting.java public class TypeSeting{ String advertisement;
public TypeSeting(String advertisement){ this.advertisement=advertisement; }
public void typeSeting(){
System.out.println(\广告排版格式:\ System.out.println(\ System.out.println(advertisement); System.out.println(\ } }
2.外观(Facade): ClientServerFacade.java public class ClientServerFacade{ private CheckWord checkWord; private Charge charge;
private TypeSeting typeSeting;
String advertisement;
public ClientServerFacade(String advertisement){ this.advertisement=advertisement;
checkWord=new CheckWord(advertisement); charge=new Charge(checkWord);
typeSeting=new TypeSeting(advertisement); }
public void doAdvertisement(){ checkWord.setChargeAmount(); charge.giveCharge(); typeSeting.typeSeting(); }
}3.应用 Application.java public class Application{
public static void main(String args[]){ ClientServerFacade clientFacade;
String clientAdvertisement=\鹿花牌洗衣机,价格2356元,联系电话:1234567\ clientFacade=new ClientServerFacade(clientAdvertisement); clientFacade.doAdvertisement(); } }
课件里有关架构的几个具体例子,比如do it all程序的重构方法,计算应收账款(Revenue Recognition)的不同设计方法
Do it all:
public class DoItAll extends javax.servlet.http.HttpServlet { protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ... // { String lastName = request.getParameter(“…\
Connection dbc = DbRegistry.getDbConnection();
String findSql = \ PreparedStatement dbQuery = dbc.prepareStatement(findSql); dbQuery.setString(1, lastName);
ResultSet rs = dbQuery.executeQuery(); rs.next();
String firstName = rs.getString(\lastName = lastName.toUpperCase();
PrintWriter out = response.getWriter(); response.setContentType(\
out.println(\
}
}
计算应收账款(Revenue Recognition)PPT9 175页
概念模型: