经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
抽象工厂
来源:cnblogs  作者:51人去楼空  时间:2018/11/3 10:08:04  对本文有异议

2018-11-02 20:54:09 开始写


 


 

IFactory.java类(顶层)

  1. 1 package AbstractFactory;
  2. 2
  3. 3 public interface IFactory {
  4. 4 public IUser createUser();
  5. 5 public IDepartment createDepartment();
  6. 6 }

IUser.java类(下层)

  1. 1 package AbstractFactory;
  2. 2
  3. 3 public interface IUser {
  4. 4 public void insert();
  5. 5 public void getById();
  6. 6 }

 

IDepartment.java类(下层)

  1. 1 package AbstractFactory;
  2. 2
  3. 3 public interface IDepartment {
  4. 4 public void insert();
  5. 5 public void getDepartmentById();
  6. 6 }

 

AccessUser.java类

  1. 1 package AbstractFactory;
  2. 2
  3. 3 public class AccessDepartment implements IDepartment {
  4. 4
  5. 5 @Override
  6. 6 public void insert() {
  7. 7 // TODO Auto-generated method stub
  8. 8 System.out.println("insert department into sqlserver.");
  9. 9 }
  10. 10
  11. 11 @Override
  12. 12 public void getDepartmentById() {
  13. 13 // TODO Auto-generated method stub
  14. 14 System.out.println("get department in ssqlserver by id.");
  15. 15 }
  16. 16
  17. 17 }

AccessDepartment.java类

  1. 1 package AbstractFactory;
  2. 2
  3. 3 public class AccessDepartment implements IDepartment {
  4. 4
  5. 5 @Override
  6. 6 public void insert() {
  7. 7 // TODO Auto-generated method stub
  8. 8 System.out.println("insert department into sqlserver.");
  9. 9 }
  10. 10
  11. 11 @Override
  12. 12 public void getDepartmentById() {
  13. 13 // TODO Auto-generated method stub
  14. 14 System.out.println("get department in ssqlserver by id.");
  15. 15 }
  16. 16
  17. 17 }

AccessFactory.java类

  1. 1 package AbstractFactory;
  2. 2
  3. 3 public class AccessDepartment implements IDepartment {
  4. 4
  5. 5 @Override
  6. 6 public void insert() {
  7. 7 // TODO Auto-generated method stub
  8. 8 System.out.println("insert department into sqlserver.");
  9. 9 }
  10. 10
  11. 11 @Override
  12. 12 public void getDepartmentById() {
  13. 13 // TODO Auto-generated method stub
  14. 14 System.out.println("get department in ssqlserver by id.");
  15. 15 }
  16. 16
  17. 17 }

FactoryTest.java类

  1. 1 package AbstractFactory;
  2. 2
  3. 3 public class FactoryTest {
  4. 4
  5. 5 public static void main(String[] args) {
  6. 6 // TODO Auto-generated method stub
  7. 7 IFactory factory = new AccessFactory();
  8. 8 IUser user = factory.createUser();
  9. 9 IDepartment department = factory.createDepartment();
  10. 10 user.insert();
  11. 11 user.getById();
  12. 12 department.insert();
  13. 13 department.getDepartmentById();
  14. 14 }
  15. 15
  16. 16 }

说明:

需要一个顶级接口、两个下层接口、两个实现下层接口的具体实现的类、1个顶层接口具体实现的类(用于创建下层接口具体实现的类)、主方法调用

IFactory factory = new AccessFactory();向上转型1次(顶层接口)(顶层接口中有两个抽象方法,下层的向上转型是同级别的)
IUser user = factory.createUser();向上转型1次(下层接口)
IDepartment department = factory.createDepartment();向上转型1次(下层接口)
user.insert();最后调用子类方法返回结果
user.getById();最后调用子类方法返回结果
department.insert();最后调用子类方法返回结果
department.getDepartmentById();最后调用子类方法返回结果


 

谢谢、Thank you、Salamat Do(撒拉玛特朵)、あリがCám o*n(嘉蒙)とゥ(阿里嘎都)、????? (勘三哈咪瘩)、terima Kasih(得力马卡系)、kob-khun(寇布库恩)、dhanyavaad(达尼阿瓦德)、toda(透达)、te?ekkür ederim(特谢库尔埃戴里姆)、Dzie,kuje(以库以而)、Spasibo(思巴喜柏)、Danke(但可)、shokran(休克朗)、Obrigada(欧布哩嘎搭)、dank u(当Q)、Merci(梅呵西)、Gracias(格拉喜亚思)、Grazie(格啦姬)、Благодарности、Tak、Kiitos、Díky、Hvala、Mul?umesc、Takk、Ευχαριστ


 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号