设计模式——抽象工厂模式(AbstractFactoryPattern)
2014-10-24 14:04
555 查看
抽象工厂模式(AbstractFactory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
UML图:
![](http://images.cnitblog.com/blog/233920/201311/30175330-b6f949e40279466791604bb90d18a2e4.png)
IFactory:
SqlserverFactory:
AccessFactory:
IUser:
AccessUser:
SqlserverUser:
IDepartment:
AccessDepartment:
SqlserverDepartment:
Department:
User:
Client:
UML图:
![](http://images.cnitblog.com/blog/233920/201311/30175330-b6f949e40279466791604bb90d18a2e4.png)
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); } }
相关文章推荐
- 解读设计模式----抽象工厂模式(AbstractFactory Pattern)
- C#设计模式——抽象工厂模式(Abstract Factory Pattern)
- 浅谈 java 设计模式--抽象工厂模式(AbstractFactory pattern)
- 五.创建型设计模式——Abstract Factory Pattern(抽象工厂模式)
- 极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
- 设计模式 - Abstract Factory Pattern(抽象工厂模式)
- 解读设计模式----抽象工厂模式(AbstractFactory Pattern)
- 我所理解的设计模式(C++实现)——抽象工厂模式(Abstract Factory Pattern)
- 设计模式——抽象工厂模式【Abstract Factory Pattern】
- Net设计模式之抽象工厂模式(Abstract Factory Pattern)
- [创建型模式系列]Abstract factory of Design Pattern模式设计之抽象工厂模式
- 极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
- 设计模式学习总结-抽象工厂模式(Abstract Factory Pattern)
- 设计模式学习总结-抽象工厂模式(Abstract Factory Pattern)
- Net设计模式实例之抽象工厂模式(Abstract Factory Pattern)
- 设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 设计模式学习总结-抽象工厂模式(Abstract Factory Pattern)
- 设计模式(三)抽象工厂模式(Abstract Factory Pattern)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
- 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)