工厂模式
github:
【 https://github.com/cstriker1407/design_pattern 】
CONTENTS
简单工厂模式
1)定义统一的接口,用来让各个元素实现。
interface onSender { public void Sender(); }
2)定义各个元素。
class MailSender implements onSender { @Override public void Sender() { System.out.println("Mail Sender"); } } class SMSSender implements onSender { @Override public void Sender() { System.out.println("SMS Sender"); } }
3)定义简单的工厂来实现元素的创造。
public class Simplefactory1 { public static onSender createOnSender(String type) { if ("Mail".equals(type)) { return new MailSender(); } if ("SMS".equals(type)) { return new SMSSender(); } return null; } public static onSender createMail() { return new MailSender(); } public static onSender createSMS() { return new SMSSender(); } }
抽象工厂模式
个人感觉抽象工厂模式很像跨平台的应用。
1)定义各个平台的接口。
interface OperateFun { public void draw(); public void write(); }
2)在各个平台上实现它们。
class Win implements OperateFun { @Override public void draw() { System.out.println("win draw"); } @Override public void write() { System.out.println("linux draw"); } } class Linux implements OperateFun { @Override public void draw() { System.out.println("linux draw"); } @Override public void write() { System.out.println("linux write"); } }
3)定义上层的操作接口,屏蔽掉调用者和下层的联系。
interface Provider { public OperateFun produce(); } class WinProvider implements Provider { @Override public OperateFun produce() { return new Win(); } } class LinuxProvider implements Provider { @Override public OperateFun produce() { return new Linux(); } }
4)上层的对操作接口的调用。
public class AbstractFactory1 { public static void test() { Provider provider = new WinProvider(); provider.produce().draw(); provider = new LinuxProvider(); provider.produce().draw(); } }
备注:
1) 工厂模式的定义没有说明,后续可能补上。
发表评论