软件体系结构与设计模式期末复习(7)

2019-01-07 19:18

publicclass SlowFactory extends ProductFactory{

public ISUV getIsuv() {

returnnew SlowSUV(); } returnnew SlowBicycle(); }} public IBicylce getIBicylce() {

Client类

publicclass Client {

publicstaticvoid main(String[] args) {

ProductFactory pf=null; pf=new SuperFactory();

pf.getProductFactory(\).getIsuv().ignition(); pf.getProductFactory(\).getIsuv().startup(); }}

适配器模式:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的可以一起工作。 对象适配器:聚合、合成、复用

Target接口

publicinterface Target { publicvoid request();}

concreteTarget类

publicclass ConcreteTarget implements Target{

publicvoid request() {

System.out.println(\普通类具有普通功能...\); }}

Adaptee类

publicclassAdaptee {

publicvoid specificRequest(){

System.out.println(\被适配类具有特殊功能...\);}}

Adapter类

publicclassAdapterimplements Target{ private Adaptee adaptee;

public Adapter(Adaptee adaptee){

this.adaptee=adaptee;} publicvoid request() {

this.adaptee.specificRequest(); }}

Client主类

publicclass Client {

publicstaticvoid main(String arg[]){

Target target=null;

target=new ConcreteTarget(); target.request();

target=new Adapter(new Adaptee()); target.request();}}

类适配器:继承、复用

Target接口

publicinterface Target { publicvoid request();}

ConcreteTarget类

publicclass ConcreteTarget implements Target{

publicvoid request() {

System.out.println(\普通类具有普通功能...\); }}

Adaptee类

publicclass Adaptee {

publicvoid specificRequest(){

System.out.println(\被适配类具有特殊功能...\);}}

Adapt类

publicclass Adapter extends Adaptee implements Target{

publicvoid request() {

super.specificRequest(); }}

主类

publicclass Client {

publicstaticvoid main(String[] args) {

Target t=null;

t=new ConcreteTarget(); t.request(); t=new Adapter(); t.request(); }}

装饰者模式:动态地给一个对象添加一些额外的职责,就增加功能来说;装饰者模式比继承更灵活;主要特征:对象层层包裹。

Present 抽象类

publicabstractclass Present { protected String name; public String getName(){

returnname;}

publicabstractdouble getPrice();}

Flower类

publicclass Flower extends Present { public Flower(){ name=\鲜花\;} publicdouble getPrice() {

return 5; }}

Cake类

publicclass Cake extends Present { public Cake(){ name=\蛋糕\;} publicdouble getPrice() {

return 10; }}

Decorator包装类

publicabstractclass Decorator extends Present { publicabstract String getName();}

Paper1包装类

publicclass Paper1 extends Decorator { Present present=null;

public Paper1(Present present){ this.present=present;} public String getName() {

returnpresent.getName()+\加上Paper1包装\; publicdouble getPrice() {

returnpresent.getPrice()+4; }}

Paper2包装类

publicclass Paper2 extends Decorator { Present present=null;

public Paper2(Present present){ this.present=present;

} public String getName() {

returnpresent.getName()+\用Paper2包装\; }

publicdouble getPrice() { returnpresent.getPrice()+8; }

}

Box包装类

publicclass Box extends Decorator { Present present=null;

public Box(Present present){

}

this.present=present;} public String getName() {

returnpresent.getName()+\用BOX包装\; publicdouble getPrice() {

returnpresent.getPrice()+10;

}}

}

桥接模式:将抽象部分与它的实现部分分离,使它们都可以变化。

TeaSize接口

publicabstractclass Teakind {

TeaSize ts;

publicabstractdouble getprice(); publicvoid setTeaSize(TeaSize ts){

this.ts=ts;

}}

TeaKind类

publicinterface TeaSize {

publicdouble price();}

BlackTea类

publicclass BlackTea extends Teakind {

publicdouble getprice() {

return 3*ts.price(); }}

GreenTea类

publicclass GreenTea extendsTeakind {

publicdouble getprice() {

return 4*ts.price(); }}

BigCup类


软件体系结构与设计模式期末复习(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新教材苏教版二年级下册第六单元两三位数的加法和减法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: