设计模式——抽象工厂模式(AbstractFactoryPattern)
来源:互联网 发布:中世纪2优化9俄罗斯 编辑:程序博客网 时间:2024/06/05 09:25
抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
UML图:
IFactory:
package com.cnblog.clarck;public interface IFactory { IUser createUser(); IDepartment createDepartment();}SqlserverFactory:
package com.cnblog.clarck;public class SqlserverFactory implements IFactory { @Override public IUser createUser() { return new SqlserverUser(); } @Override public IDepartment createDepartment() { return new SqlserverDepartment(); }}AccessFactory:
package com.cnblog.clarck;public class AccessFactory implements IFactory { @Override public IUser createUser() { return new AccessUser(); } @Override public IDepartment createDepartment() { return new AccessDepartment(); }}IUser:
package com.cnblog.clarck;public interface IUser { void insert(User user); User getUser(int id);}AccessUser:
package com.cnblog.clarck;public class AccessUser implements IUser { @Override public void insert(User user) { System.out.println("在Access中给User表增加一条记录"); } @Override public User getUser(int id) { System.out.println("在Access中根据ID得到User表一条记录"); return null; }}SqlserverUser:
package com.cnblog.clarck;public class SqlserverUser implements IUser { @Override public void insert(User user) { System.out.println("在SQL Server中给User表增加一条记录"); } @Override public User getUser(int id) { System.out.println("在SQL Server中根据ID得到User表一条记录"); return null; }}IDepartment:
package com.cnblog.clarck;/** * IDepartment 接口,用于客户端访问,解除与具体数据库访问的耦合 * * @author clarck * */public interface IDepartment { public void insert(Department department); public Department getDepartment(int id);}AccessDepartment:
package com.cnblog.clarck;public class AccessDepartment implements IDepartment { @Override public void insert(Department department) { System.out.println("在Access中给Department表增加一条记录"); } @Override public Department getDepartment(int id) { System.out.println("在Access中根据ID得到Department表一条记录"); return null; }}SqlserverDepartment:
package com.cnblog.clarck;public class SqlserverDepartment implements IDepartment { @Override public void insert(Department department) { System.out.println("在SQL Server中给Department表添加一条记录"); } @Override public Department getDepartment(int id) { System.out.println("在SQL Server中根据ID得到Department表的一条记录"); return null; }}Department:
package com.cnblog.clarck;public class Department { private int mID; private String mDeptName; public int getID() { return mID; } public void setID(int mID) { this.mID = mID; } public String getDeptName() { return mDeptName; } public void setDeptName(String mDeptName) { this.mDeptName = mDeptName; }}User:
package com.cnblog.clarck;public class User { private int mID; private String mName; public int getID() { return mID; } public void setID(int mID) { this.mID = mID; } public String getName() { return mName; } public void setName(String mName) { this.mName = mName; }}Client:
package com.cnblog.clarck;public class Client { public static void main(String[] args) { User user = new User(); Department department = new Department(); //IFactory factory = new SqlserverFactory(); IFactory factory = new AccessFactory(); IUser iu = factory.createUser(); iu.insert(user); iu.getUser(1); IDepartment iDepartment = factory.createDepartment(); iDepartment.insert(department); iDepartment.getDepartment(1); }}
0 0
- 设计模式——抽象工厂模式(AbstractFactoryPattern)
- 设计模式------抽象工厂模式(AbstractFactoryPattern)
- 设计模式-抽象工厂模式(AbstractFactoryPattern)
- 抽象工厂模式AbstractFactoryPattern
- 抽象工厂模式AbstractFactoryPattern
- C++设计模式之——抽象工厂模式(AbstractFactoryPattern)
- C++设计模式五--AbstractFactoryPattern(抽象工厂模式)
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- Oracle ADF 100个例外 Business Components Error Messages(错误提示!)
- 一个老程序员的忠告:不要一辈子靠技术生存
- notification 报错the method build() is undefined for the type Notificatin.Builder
- mongodb shell命令大全
- javascript 除法运算
- 设计模式——抽象工厂模式(AbstractFactoryPattern)
- SpringMVC同时支持多视图(JSP,Velocity,Freemarker等)的一种思路实现
- loadrunner:java.lang.OutOfMemoryError: Java heap space 问题解决
- BZOJ 1483 HNOI2009 梦幻布丁 链表+启发式合并
- php页面使用get方法 url字符串处理urlencode
- 推荐一下《聊聊高并发》的专栏
- android启动之SystemServer启动
- BZOJ 2186 SDOI 2008 沙拉公主的困惑 数论
- 笔试题目回忆