设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。
1 package designPattern; 2 /** 3 * 抽象工厂模式 4 * @author Administrator 5 */ 6 public class A3_AbstractFactoryTest { 7 8 /** 9 * 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。10 * 1.一个系统要独立于它的产品的创建、组合和表示时。11 * 2.一个系统要由多个产品系列中的一个来配置时。12 * 3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。13 * 4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。14 */15 public static void main(String[] args) {16 IAnimalFactory whiteAnimalFactory=new WhiteAnimalFactory();17 ICat whiteCat=whiteAnimalFactory.createCat();18 whiteCat.eat();19 20 IAnimalFactory blackAnimalFactory=new BlackAnimalFactory();21 ICat blackCat=blackAnimalFactory.createCat();22 blackCat.eat();23 24 IDog whiteDog=whiteAnimalFactory.createDog();25 whiteDog.eat();26 27 IDog blackDog=blackAnimalFactory.createDog();28 blackDog.eat();29 }30 }31 //AbstractFactory 声明一个创建抽象产品对象的操作接口32 interface IAnimalFactory 33 {34 ICat createCat();35 IDog createDog();36 }37 //ConcreteFactory 声明一个创建具体产品对象的接口38 class BlackAnimalFactory implements IAnimalFactory39 {40 public ICat createCat() {41 return new BlackCat();42 }43 44 public IDog createDog() {45 return new BlackDog();46 } 47 }48 class WhiteAnimalFactory implements IAnimalFactory49 {50 public ICat createCat() {51 return new WhiteCat();52 }53 54 public IDog createDog() {55 return new WhiteDog();56 } 57 }58 //AbstractProduct 为一类产品对象声明一个接口59 interface ICat60 {61 void eat();62 }63 interface IDog64 {65 void eat();66 }67 //ConcreteProduct 定义一个将被相应的具体工厂创建的产品对象68 class BlackCat implements ICat69 {70 public void eat() {71 System.out.println("the blackCat is ..."); 72 } 73 }74 //ConcreteProduct 75 class WhiteCat implements ICat76 {77 public void eat() {78 System.out.println("the whiteCat is ..."); 79 } 80 }81 //ConcreteProduct 82 class BlackDog implements IDog83 {84 public void eat() {85 System.out.println("the blackdog is ..."); 86 } 87 }88 //ConcreteProduct 89 class WhiteDog implements IDog90 {91 public void eat() {92 System.out.println("the whitedog is ..."); 93 } 94 }
环境:JDK1.6,MAVEN,tomcat,eclipse
源码地址:http://files.cnblogs.com/files/xiluhua/designPattern.rar
欢迎亲们评论指教。