zoukankan      html  css  js  c++  java
  • 抽象工厂模式

    抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

    结构图:

     代码如下:

     1 public class AbstractFactoryTest {
     2     public static void main(String[] args) {
     3         User user = new User();
     4         Department department = new Department();
     5         
     6         IUser iuser = DataAccess.createUser(); //直接得到数据访问实力,而不存在任何依赖
     7         iuser.insertUser(user);
     8         iuser.getUser("id");
     9         
    10         IDepartment idepartment = DataAccess.createDepartment();
    11         idepartment.insertDepartment(department);
    12         idepartment.getDepartment("id");
    13     }
    14 
    15 }
    AbstractFactoryTest
     1 package com.cai.designMethods.abstractFactory;
     2 
     3 public class DataAccess {
     4     private static final String bd = "Sqlserver"; //数据库名 可换成Access
     5     
     6     public static IUser createUser(){
     7         IUser user = null;
     8         if("Sqlserver".equals(bd)){
     9             user = new SqlserverUser();
    10         }else if("Access".equals(bd)){
    11             user = new AccessUser();
    12         }
    13         return user;
    14     }
    15     
    16     public static IDepartment createDepartment(){
    17         IDepartment departmrnt = null;
    18         if("Sqlserver".equals(bd)){
    19             departmrnt = new SqlserverDepartment();
    20         }else if("Access".equals(bd)){
    21             departmrnt = new AccessDepartment();
    22         }
    23         return departmrnt;
    24     }
    25         
    26 }
    DataAccess
    1 public interface IUser {
    2     int insertUser(User user);
    3     User getUser(String id);
    4 
    5 }
    IUser
     1 public class AccessUser implements IUser {
     2 
     3     @Override
     4     public int insertUser(User user) {
     5         // TODO Auto-generated method stub
     6         return 0;
     7     }
     8 
     9     @Override
    10     public User getUser(String id) {
    11         // TODO Auto-generated method stub
    12         return null;
    13     }
    14 
    15 }
    AccessUser
     1 public class SqlserverUser implements IUser {
     2 
     3     @Override
     4     public int insertUser(User user) {
     5         // TODO Auto-generated method stub
     6         return 0;
     7     }
     8 
     9     @Override
    10     public User getUser(String id) {
    11         // TODO Auto-generated method stub
    12         return null;
    13     }
    14 
    15 }
    SqlserverUser
    1 public interface IDepartment {
    2     int insertDepartment(Department department);
    3     User getDepartment(String id);
    4 }
    IDepartment
     1 public class AccessDepartment implements IDepartment {
     2 
     3     @Override
     4     public int insertDepartment(Department department) {
     5         return 0;
     6     }
     7 
     8     @Override
     9     public User getDepartment(String id) {
    10         return null;
    11     }
    12 
    13 }
    AccessDepartment
     1 public class SqlserverDepartment implements IDepartment {
     2 
     3     @Override
     4     public int insertDepartment(Department department) {
     5         // TODO Auto-generated method stub
     6         return 0;
     7     }
     8 
     9     @Override
    10     public User getDepartment(String id) {
    11         // TODO Auto-generated method stub
    12         return null;
    13     }
    14 
    15 }
    SqlserverDepartment
    1 public class User {
    2 
    3 }
    User
    1 public class Department {
    2 
    3 }
    Department
  • 相关阅读:
    oracle a:=100 和 b=:c 区别
    Oracle为表或字段添加备注
    oracle删除表字段和oracle表增加字段
    oracle数据库的一个表中,怎么设置字段的默认值
    VS2015密钥
    C# 调用WebApi
    OCX ClassId查看
    C++ 调用类的函数
    如何做一个标记为安全的ACTIVEX控件
    Java内存通道
  • 原文地址:https://www.cnblogs.com/cai170221/p/13360476.html
Copyright © 2011-2022 走看看