Java必学的23种设计模式(详细)(2)

2019-08-26 18:02

Java设计模式(疯狂Java联盟版)

p*blic class BlackAnimalFactory implem*nts IAnimalFactory {

public ICat createCat() { retur* new BlackCat(); }

public IDog createDog() { return new BlackDog(); } }

public class WhiteAnimalFac*ory imp*ements IAnimalFactory {

public ICat createCat() { return new WhiteCat(); }

public IDog cre*teDog() { return new WhiteDog(); } }

Abstrac*Product

public interface ICat {

void eat(); }

public interface IDog {

void eat(); }

Concrete*roduct

public class Black*at implements ICat {

public void eat() {

System.out.println(\ } }

6

Java设计模式(疯狂Java联盟版)

public class WhiteCat implements *Cat {

public void eat() {

Sy*tem.out.prin*ln(\ } }

public class BlackDog implements IDog {

public void eat() {

System.out.println(\ } }

public class WhiteDog implements IDog {

public void eat() {

System.out.println(\ } }

Client

public static void main(String[] args) {

IAnimalFactory blackAnimalFa*tory = new BlackAnimalFactory(); ICat blackCat = blackAnimalFactory.createCat(); blackCat.eat();

IDog blackD*g = blackAnimalFactory.createDog(); blackDog.eat();

IAnimalFactory whiteAnimalF*ctory = new WhiteAnimalFactory(); ICat whiteCat = whiteAnimalFactory.createCat(); whiteCat.eat();

IDog *hiteDog = whiteAnimalFactory.createDog(); whiteDog.eat(); }

res*lt

The bla*k cat is eating! Th* black dog is eatin*! The white cat is eating!

7

Java设计模式(疯狂Java联盟版)

The white dog is *ating!

1.1.3 建造者模式

将一个复杂对象的构*与它的表示分离,使*同样的构建过程可以创建不同的表示。

适用性

1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。

*.当构造过程必须允*被构造的对象有不同*表示时。

参与者

1.Builder

为创建一个Product对象的各个部件指定抽象接口。

2.ConcreteBuilder

实现Buil*er的接口以构造和装配该产品的各个部件。 定义并明确它所创建的表示* 提供一个检索产品的接口。

3.Director

构造一个使用Builder接口的对象。

4.Product

表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。

包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

类图

8

Java设计模式(疯狂Java联盟版)

例子 Buil*er

public interface PersonBuilder {

void buildHead();

v*id buildBody();

void buildFoot()*

Person buildPerson(); }

ConcreteBuilder

public class ManBuilder implements PersonB*ilder {

Person person;

public ManBuilder() { person = ne* Man(); }

publ*c void build*ody() {

perso*.setBody(\建造男人的身体\

9

Java设计模式(疯狂Java联盟版)

}

public void buildFoot() {

person.setFo*t(\建造男人的脚\ }

public void buildHead() {

pers*n.setHead(\建造*人的头\ }

*ublic Person buildPerson() { retur* person; } }

Dir*ctor

public class PersonDirec*or {

public Person constructPerson(PersonBuilder pb) { pb.buildHead(); pb.buildBody(); pb.buildFoot();

return pb.buildPerson(); } }

Product

public class Person {

private String head;

private String body;

private String foot;

public String getH*ad() { return head; }

public void setHead(String hea*) { this.head = head; }

public String getBody() {

10


Java必学的23种设计模式(详细)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016年秋季新版湘教版七年级数学上学期4.2、线段、射线、直线同

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

马上注册会员

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