抽象工厂模式
设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。
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 IAnimalFactory 39 { 40 public ICat createCat() { 41 return new BlackCat(); 42 } 43 44 public IDog createDog() { 45 return new BlackDog(); 46 } 47 } 48 class WhiteAnimalFactory implements IAnimalFactory 49 { 50 public ICat createCat() { 51 return new WhiteCat(); 52 } 53 54 public IDog createDog() { 55 return new WhiteDog(); 56 } 57 } 58 //AbstractProduct 为一类产品对象声明一个接口 59 interface ICat 60 { 61 void eat(); 62 } 63 interface IDog 64 { 65 void eat(); 66 } 67 //ConcreteProduct 定义一个将被相应的具体工厂创建的产品对象 68 class BlackCat implements ICat 69 { 70 public void eat() { 71 System.out.println("the blackCat is ..."); 72 } 73 } 74 //ConcreteProduct 75 class WhiteCat implements ICat 76 { 77 public void eat() { 78 System.out.println("the whiteCat is ..."); 79 } 80 } 81 //ConcreteProduct 82 class BlackDog implements IDog 83 { 84 public void eat() { 85 System.out.println("the blackdog is ..."); 86 } 87 } 88 //ConcreteProduct 89 class WhiteDog implements IDog 90 { 91 public void eat() { 92 System.out.println("the whitedog is ..."); 93 } 94 }
环境:JDK1.6,MAVEN,tomcat,eclipse
源码地址:https://files.cnblogs.com/files/xiluhua/designPattern.rar
欢迎亲们评论指教。