星空网 > 软件开发 > ASP.net

【设计模式】1、抽象工厂模式

【设计模式】1、抽象工厂模式

 

对于这个抽象工厂的相应的代码实现

/** * 功能:抽象工厂模式的作用      适用性    1.一个系统要独立于它的产品的创建、组合和表示时。    2.一个系统要由多个产品系列中的一个来配置时。    3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。    4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。 * 时间:2016年2月11日22:18 * 作者:cutter_point */package com.shejimoshi.create.AbstractFactory;public interface IFactory{  //这个工厂接口用来创建用户和部门  IUser createUser();    IDepartment createDepartment();}

 1 /** 2  * 功能:抽象工厂模式的作用 3       适用性 4     1.一个系统要独立于它的产品的创建、组合和表示时。 5     2.一个系统要由多个产品系列中的一个来配置时。 6     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。 7     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。 8  * 时间:2016年2月11日22:21 9  * 作者:cutter_point10 */11 package com.shejimoshi.create.AbstractFactory;12 13 public interface IUser14 {15   //插入用户和获取用户数据16   void Insert(User user);17   User GetUser(int id);18 }

 

 1 /** 2  * 功能:抽象工厂模式的作用 3       适用性 4     1.一个系统要独立于它的产品的创建、组合和表示时。 5     2.一个系统要由多个产品系列中的一个来配置时。 6     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。 7     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。 8  * 时间:2016年2月11日22:21 9  * 作者:cutter_point10 */11 package com.shejimoshi.create.AbstractFactory;12 13 public interface IDepartment14 {15   void insert(Department department);16   17   Department getDepartment(int id);18 }

 

对于IFactory派生的

 1 package com.shejimoshi.create.AbstractFactory; 2  3  4 /** 5  * 功能:抽象工厂模式的作用 6       适用性 7     1.一个系统要独立于它的产品的创建、组合和表示时。 8     2.一个系统要由多个产品系列中的一个来配置时。 9     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。10     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。11  * 时间:2016年2月11日下午10:40:4712  * 作者:cutter_point13 */14 public class AccessFactory implements IFactory15 {16 17   @Override18   public IUser createUser()19   {20     return new AccessUser();21   }22 23   @Override24   public IDepartment createDepartment()25   {26     // TODO Auto-generated method stub27     return new AccessDepartment();28   }29 30 }

 

 1 /** 2  * 功能:抽象工厂模式的作用 3       适用性 4     1.一个系统要独立于它的产品的创建、组合和表示时。 5     2.一个系统要由多个产品系列中的一个来配置时。 6     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。 7     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。 8  * 时间:2016年2月11日22:21 9  * 作者:cutter_point10 */11 package com.shejimoshi.create.AbstractFactory;12 13 public class SqlServerFactory implements IFactory14 {15 16   @Override17   public IUser createUser()18   {19     // TODO Auto-generated method stub20     return new SqlServerUser();21   }22 23   @Override24   public IDepartment createDepartment()25   {26     // TODO Auto-generated method stub27     return new SqlServerDepartment();28   }29 30 }

 

IUser派生

 

 1 package com.shejimoshi.create.AbstractFactory; 2  3  4 /** 5  * 功能:抽象工厂模式的作用 6       适用性 7     1.一个系统要独立于它的产品的创建、组合和表示时。 8     2.一个系统要由多个产品系列中的一个来配置时。 9     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。10     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。11  * 时间:2016年2月11日下午10:32:1912  * 作者:cutter_point13 */14 public class SqlServerUser implements IUser15 {16 17   @Override18   public void Insert(User user)19   {20     System.out.println("插入一条用户数据到sql:" + user.getId() + ":" + user.getName());21   }22 23   @Override24   public User GetUser(int id)25   {26     System.out.println("获取一条用户数据根据sql的id:" + id);27     return null;28   }29 30 }

 

 1 package com.shejimoshi.create.AbstractFactory; 2  3  4 /** 5  * 功能:抽象工厂模式的作用 6       适用性 7     1.一个系统要独立于它的产品的创建、组合和表示时。 8     2.一个系统要由多个产品系列中的一个来配置时。 9     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。10     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。11  * 时间:2016年2月11日下午10:41:5412  * 作者:cutter_point13 */14 public class AccessUser implements IUser15 {16 17   @Override18   public void Insert(User user)19   {20     System.out.println("插入一个用户数据到access");21   }22 23   @Override24   public User GetUser(int id)25   {26     System.out.println("从access获取一条数据");27     return null;28   }29 30 }

IDepartment派生的子类

 

 1 package com.shejimoshi.create.AbstractFactory; 2  3  4 /** 5  * 功能:抽象工厂模式的作用 6       适用性 7     1.一个系统要独立于它的产品的创建、组合和表示时。 8     2.一个系统要由多个产品系列中的一个来配置时。 9     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。10     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。11  * 时间:2016年2月11日下午10:38:4812  * 作者:cutter_point13 */14 public class SqlServerDepartment implements IDepartment15 {16 17   @Override18   public void insert(Department department)19   {20     System.out.println("新增加一个部门");21   }22 23   @Override24   public Department getDepartment(int id)25   {26     System.out.println("获取一个部门数据");27     return null;28   }29 30 }

 

 1 package com.shejimoshi.create.AbstractFactory; 2  3  4 /** 5  * 功能:抽象工厂模式的作用 6       适用性 7     1.一个系统要独立于它的产品的创建、组合和表示时。 8     2.一个系统要由多个产品系列中的一个来配置时。 9     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。10     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。11  * 时间:2016年2月11日下午10:45:5412  * 作者:cutter_point13 */14 public class AccessDepartment implements IDepartment15 {16 17   @Override18   public void insert(Department department)19   {20     System.out.println("吧新增的部门添加到access数据库中");21   }22 23   @Override24   public Department getDepartment(int id)25   {26     System.out.println("从access数据库获取department信息");27     return null;28   }29 30 }

 

最后我们写一段测试代码:

 

 1 package com.shejimoshi.create.AbstractFactory; 2  3  4 /** 5  * 功能:抽象工厂模式的作用 6       适用性 7     1.一个系统要独立于它的产品的创建、组合和表示时。 8     2.一个系统要由多个产品系列中的一个来配置时。 9     3.当你要强调一系列相关的产品对象的设计以便进行联合使用时。10     4.当你提供一个产品类库,而只想显示它们的接口而不是实现时。11  * 时间:2016年2月11日下午10:47:3712  * 作者:cutter_point13 */14 public class Test15 {16   public static void abstractfactorymethod(IFactory factory)17   {18     User user = new User();19     user.setId(1); user.setName("cutter_point");20     Department department = new Department();21     department.setId(1); department.setName("this is China");22     23     IUser iu = factory.createUser();24     iu.Insert(user);25     iu.GetUser(1);26     27     IDepartment idp = factory.createDepartment();28     idp.insert(department);29     idp.getDepartment(1);30   }31 32   public static void main(String[] args)33   {34     SqlServerFactory sqlf = new SqlServerFactory();35     AccessFactory accf = new AccessFactory();36     37     abstractfactorymethod(sqlf);38     abstractfactorymethod(accf);39 40   }41 42 }

运行结果:

插入一条用户数据到sql:1:cutter_point获取一条用户数据根据sql的id:1新增加一个部门获取一个部门数据插入一个用户数据到access从access获取一条数据吧新增的部门添加到access数据库中从access数据库获取department信息

 




原标题:【设计模式】1、抽象工厂模式

关键词:设计模式

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

布里斯班海运双清:https://www.goluckyvip.com/tag/29119.html
排除条款:https://www.goluckyvip.com/tag/2912.html
布鲁可积木:https://www.goluckyvip.com/tag/29120.html
布鲁姆空运:https://www.goluckyvip.com/tag/29121.html
财赋优:https://www.goluckyvip.com/tag/29122.html
财汇通支付 EcpayGlobal :https://www.goluckyvip.com/tag/29123.html
深圳有没有比较好玩的景点 深圳有没有比较好玩的景点推荐一下:https://www.vstour.cn/a/366175.html
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流