Java设计模式-图解-附代码(2)

2019-03-29 11:23

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

}

public class WhiteAnimalFactory implements IAnimalFactory { public ICat createCat() { return new WhiteCat(); }

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

AbstractProduct

public interface ICat { void eat(); }

public interface IDog { void eat(); }

Concrete*roduct

public class Blackcat implements ICat { public void eat() {

System.out.println(\ } }

public class WhiteCat implements ICat { public void eat() {

System.out.println(\ } }

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 blackAnimalFactory = new BlackAnimalFactory(); ICat blackCat = blackAnimalFactory.createCat(); blackCat.eat();

IDog blackDog = blackAnimalFactory.createDog(); blackDog.eat();

IAnimalFactory whiteAnimalFactory = new WhiteAnimalFactory(); ICat whiteCat = whiteAnimalFactory.createCat();

5

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

whiteCat.eat();

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

res*lt

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

1.1.3 建造者模式

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

适用性

1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2.当构造过程必须允许被构造的对象有不同的表示时。

参与者

1.Builder

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

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

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

表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。 包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

类图

例子

Builder 新建地图接口:

package map_package;

public interface map_interface { public void create_weather();

6

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

public void create_house(); public void create_tree(); public void create_way(); }

新建晴天地图类:

package map_package;

public class map_sun implements map_interface { public void create_weather() { System.out.println(\晴天\ }

public void create_house() {

System.out.println(\房了上玻璃发亮\ }

public void create_tree() {

System.out.println(\树的颜色是浅绿色\ }

public void create_way() {

System.out.println(\路面有些干燥\ } }

ConcreateBuildr新建阴天地图类:

package map_package;

public class map_cloudy implements map_interface{ public void create_weather() { System.out.println(\阴天\ }

public void create_house() {

System.out.println(\房了上玻璃发暗\ }

public void create_tree() {

System.out.println(\树的颜色是深绿色\ }

public void create_way() {

System.out.println(\路面有些潮湿\ } }

新建高画质builder建造者类: package map_build;

7

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

import map_package.map_interface; public class map_build_adv {

private map_interface map_interface_ref;

public map_build_adv(map_interface map_interface_ref) { super();

this.map_interface_ref = map_interface_ref; }

public void create_map() {

System.out.println(\创建一个高画质的地图\ // 创建的顺序很重要 从天空往路面创建 map_interface_ref.create_weather(); map_interface_ref.create_house(); map_interface_ref.create_tree(); map_interface_ref.create_way(); } }

新建低画质builder建造者类:

package map_build;

import map_package.map_interface; public class map_build_low {

private map_interface map_interface_ref;

public map_build_low(map_interface map_interface_ref) { super();

this.map_interface_ref = map_interface_ref; }

public void create_map() {

System.out.println(\创建一个低画质的地图\ // 创建的顺序很重要 从天空往路面创建 map_interface_ref.create_weather(); map_interface_ref.create_house();

// map_interface_ref.create_tree();将创建树的过程去掉 map_interface_ref.create_way(); } }

新建客户端运行类:

package run_main;

import map_build.map_build_adv; import map_build.map_build_low; import map_package.map_cloudy; import map_package.map_sun; public class run_main {

8

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

public static void main(String[] args) {

map_cloudy map_cloudy = new map_cloudy();

map_build_adv map_build_adv = new map_build_adv(map_cloudy); map_build_adv.create_map(); System.out.println();

map_sun map_sun = new map_sun();

map_build_low map_build_low = new map_build_low(map_sun); map_build_low.create_map(); } }

程序运行结果如下: 创建一个高画质的地图 阴天

房了上玻璃发暗 树的颜色是深绿色 路面有些潮湿

创建一个低画质的地图 晴天

房了上玻璃发亮 路面有些干燥

1.1.4 单态模式

保证一个类仅有一个实例,*提供一个访问它的全局访*点。

适用性

1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。

2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。

参与者

Singleton

定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类操作。 可能负责创建它自己的唯一实例。

类图

例子 Singleton

9


Java设计模式-图解-附代码(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2009中考分类汇编-二次函数

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

马上注册会员

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