|
http://35java.com/zhibo/forum.php?mod=viewthread&tid=34&extra=page%3D4 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
1.一个系统要独立于它的*品的创建、组合和表示时。 2.一个系统要由多个产品系列中的一个来配置时。 3.当你要强调一系列相关的产品对象的设计以便进行联合使用时* 4*当你提供一个产品类库,而只想显示它们*接口而不是实现时。
1.Ab*tractFactory 声明一个创建抽象产品对象的操作接口。 2.ConcreteFactory 实现创建具体产品对象的操作。 *.AbstractProduct 为一类产品对象声明一个接口。 4.ConcreteProdu*t 定义一个将被相应的具体工厂创建的产品*象。 实现*bstractProduct接口。 5.Client 仅使用由AbstractFactory和AbstractProduc*类声明的接口
*bstractFactory public interface IAn*malFactory { ICat createCat(); IDog cre*teDog();} ConcreteFactory 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("The bl*ck cat is eating!"); } } public class WhiteCat implements *Cat { public void eat() { Sy*tem.out.prin*ln("The w*ite cat is eating!*); } } public class BlackDog implements IDog { public void eat() { System.out.println("The black dog is eating"); } } public class WhiteDog implements IDog { public void eat() { System.out.println("The white dog is eat*ng!"); } } 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!The white dog is *ating! |

浙公网安备 33010602011771号