[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2013-10-16 标题设计模式学习笔记工厂模式分类编程 / 设计模式 / java 标签设计模式·java·工厂模式设计模式学习笔记工厂模式简单工厂模式1. 定义统一接口供各元素实现2. 定义各元素3. 定义简单工厂负责元素的创建抽象工厂模式1. 定义各平台统一接口2. 在各平台上实现接口3. 定义上层操作接口屏蔽调用者与下层的直接依赖4. 上层调用示例备注工厂模式将对象的创建与使用分离调用者只面向接口编程无需关心具体实现类的实例化。示例代码https://github.com/cstriker1407/design_pattern简单工厂模式1. 定义统一接口供各元素实现interfaceonSender{publicvoidSender();}2. 定义各元素classMailSenderimplementsonSender{OverridepublicvoidSender(){System.out.println(Mail Sender);}}classSMSSenderimplementsonSender{OverridepublicvoidSender(){System.out.println(SMS Sender);}}3. 定义简单工厂负责元素的创建publicclassSimplefactory1{publicstaticonSendercreateOnSender(Stringtype){if(Mail.equals(type)){returnnewMailSender();}if(SMS.equals(type)){returnnewSMSSender();}returnnull;}publicstaticonSendercreateMail(){returnnewMailSender();}publicstaticonSendercreateSMS(){returnnewSMSSender();}}抽象工厂模式抽象工厂模式类似跨平台应用的设计思路上层只依赖抽象接口具体平台实现由 Provider 决定。1. 定义各平台统一接口interfaceOperateFun{publicvoiddraw();publicvoidwrite();}2. 在各平台上实现接口classWinimplementsOperateFun{Overridepublicvoiddraw(){System.out.println(win draw);}Overridepublicvoidwrite(){System.out.println(linux draw);}}classLinuximplementsOperateFun{Overridepublicvoiddraw(){System.out.println(linux draw);}Overridepublicvoidwrite(){System.out.println(linux write);}}3. 定义上层操作接口屏蔽调用者与下层的直接依赖interfaceProvider{publicOperateFunproduce();}classWinProviderimplementsProvider{OverridepublicOperateFunproduce(){returnnewWin();}}classLinuxProviderimplementsProvider{OverridepublicOperateFunproduce(){returnnewLinux();}}4. 上层调用示例publicclassAbstractFactory1{publicstaticvoidtest(){ProviderprovidernewWinProvider();provider.produce().draw();providernewLinuxProvider();provider.produce().draw();}}备注工厂模式定义后续补充。