让我们看看AbstractFactory对象创建型模式。该模式的用意在于,提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们具体的类。源码如下:首先创建AbstractFactory.java接口文件。public interface AbstractFactory { public AbstractProductA createProductA(); public AbstractProductA createProductB();}再写一个接口类,AbstractProductA.javapublic interface AbstractProductA { public void operationA();}然后实现AbstractProductA接口,如下两个.java文件。public class ConcreteProductA1 implements AbstractProductA { public void operationA() { System.out.println("I am a ProductA1"); } }public class ConcreteProductA2 implements AbstractProductA { public void operationA() { System.out.println("I am a ProductA2"); } }最后,我们来实现AbstractFactory接口:public class ConcreteFactory1 implements AbstractFactory { //关键的类; public AbstractProductA createProductA() { return new ConcreteProductA1(); } public AbstractProductA createProductB() { return new ConcreteProductA2(); } private ConcreteProductA1 lnkConcreteProductA1; private ConcreteProductA2 lnkConcreteProductA2; }通过这样一种方式,我们实现了AbstractFactory模式。最后协议个测试程序。Client.javapublic class Client { public static void main(String[] args) { //构建工厂; AbstractFactory lnkAbstractFactory = new ConcreteFactory1(); //针对工厂生成对象; AbstractProductA xx = lnkAbstractFactory.createProductA(); xx.operationA(); xx = lnkAbstractFactory.createProductB(); xx.operationA(); } }从而实现了我们的目标。
让我们继续看facade结构型模式。其用意在于,为子系统中的一组接口提供一个一致的界面。熟悉J2EE中session facade、message facade设计模式的朋友看这个DP会很简单。好了,让我们看看代码:首先写两个子系统.java文件。SubSystemA.java如下。public class SubSystemA { public void operationA() { System.out.println("SubSystemA.operationA() executing"); }}SubSystemB.java如下:public class SubSystemB { public void operationB() { System.out.println("SubSystemB.operationB() executing"); }}实现子系统的外观,Facade.javapublic class Facade { public void operation() { // 模式的关键之处! new SubSystemA().operationA(); new SubSystemB().operationB(); } private SubSystemB lnkSubSystemB; private SubSystemA lnkSubSystemA; }从而实现了facade模式。测试Client.java: public class Client { public static void main(String[] args) { Facade lnkFacade = new Facade(); lnkFacade.operation(); } }补充: 考虑J2EE系统中Session(Message) Facade模式是如何实现的?与Facade模式有什么关系?
public AbstractProductA createProductB();}再写一个接口类,AbstractProductA.javapublic interface AbstractProductA { public void operationA();}然后实现AbstractProductA接口,如下两个.java文件。public class ConcreteProductA1 implements AbstractProductA {
public void operationA() {
System.out.println("I am a ProductA1");
}
}public class ConcreteProductA2 implements AbstractProductA {
public void operationA() {
System.out.println("I am a ProductA2");
}
}最后,我们来实现AbstractFactory接口:public class ConcreteFactory1 implements AbstractFactory {
//关键的类;
public AbstractProductA createProductA() {
return new ConcreteProductA1();
} public AbstractProductA createProductB() {
return new ConcreteProductA2();
} private ConcreteProductA1 lnkConcreteProductA1;
private ConcreteProductA2 lnkConcreteProductA2;
}通过这样一种方式,我们实现了AbstractFactory模式。最后协议个测试程序。Client.javapublic class Client {
public static void main(String[] args) {
//构建工厂;
AbstractFactory lnkAbstractFactory = new ConcreteFactory1();
//针对工厂生成对象;
AbstractProductA xx = lnkAbstractFactory.createProductA();
xx.operationA();
xx = lnkAbstractFactory.createProductB();
xx.operationA();
}
}从而实现了我们的目标。
System.out.println("SubSystemA.operationA() executing");
}}SubSystemB.java如下:public class SubSystemB { public void operationB() {
System.out.println("SubSystemB.operationB() executing");
}}实现子系统的外观,Facade.javapublic class Facade { public void operation() {
// 模式的关键之处!
new SubSystemA().operationA();
new SubSystemB().operationB();
} private SubSystemB lnkSubSystemB; private SubSystemA lnkSubSystemA;
}从而实现了facade模式。测试Client.java: public class Client { public static void main(String[] args)
{
Facade lnkFacade = new Facade();
lnkFacade.operation();
}
}补充: 考虑J2EE系统中Session(Message) Facade模式是如何实现的?与Facade模式有什么关系?
所以很想听听怎么从现有的源代码对设计模式进行分析,毕竟,那些东东都是大家承认,在设计上比较优秀的。这个可比光看看模式长啥样要来得有趣!个人意见,参考参考
不然大家很多都会看不懂的。
谢谢,这里很多都是初学者。
你可一定要完成剩下的20个模式,我觉得你这么讲还挺好看懂的。
我在jc里建了个工程,准备放上这23个模式。
加油啊!
给你最热烈的掌声!1!2!3!………………………………(掌声不断!)现在的书商没有出几本好书,都是低级的copy。哦有那么几本,贵的很。偶是穷人,只好看!期待你的下一篇!再次以最热烈的掌声……………………………………………………