设计模式(十一)——抽象工厂
来源:互联网 发布:淘宝模特摄影师 编辑:程序博客网 时间:2024/06/03 14:50
抽象工厂模式(Abstract Factory)
抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而勿需指定它们具体的类。
代码
1.代码如下:
用户类
using System;namespace AbstractFactory{//用户类public class User{//ID号private int _id;public int ID {get{ return _id; }set{ _id = value; }}//名字private string _name;public string Name {get{ return _name; }set{ _name = value; }}}}
部门类
using System;namespace AbstractFactory{public class Department{public Department (){}}}
工厂接口
using System;namespace AbstractFactory{public interface IFactory{IUser CreateUser();IDepartment CreateDepartment ();}}
具体工厂——SqlServer
using System;namespace AbstractFactory{public class SqlServerFactory:IFactory{public IUser CreateUser(){return new SqlserverUser();}public IDepartment CreateDepartment(){return new SqlserverDepartment();}}}
具体工厂——AccessFactory
using System;namespace AbstractFactory{public class AccessFactory:IFactory{public IUser CreateUser(){return new AccessUser ();}public IDepartment CreateDepartment(){return new AccessDepartment();}}}
部门接口
using System;namespace AbstractFactory{public interface IDepartment{void Insert(Department department);Department GetDepartment (int id);}}
具体部们——SqlserverDepartment
using System;namespace AbstractFactory{public class SqlserverDepartment:IDepartment{//插入数据public void Insert(Department department){Console.WriteLine ("在SQL Server中给Department表增加一条记录");}//获取数据public Department GetDepartment(int id){Console.WriteLine ("在SQL Server中根据ID得到Department表一条记录");return null;}}}
具体部门——AccessDepartment
using System;namespace AbstractFactory{public class AccessUser:IUser{//插入数据public void Insert(User user){Console.WriteLine ("在Access中给User表增加一条记录");}//获取数据public User GetUser(int id){Console.WriteLine ("在Access中根据ID得到User表一条记录");return null;}}}
用户接口
using System;namespace AbstractFactory{public interface IUser{void Insert (User user);User GetUser(int id);}}
具体用户——SqlserverUser
using System;namespace AbstractFactory{public class SqlserverUser:IUser{//插入数据public void Insert(User user){Console.WriteLine ("在SQL Server中给User表增加一条记录");}//获取数据public User GetUser(int id){Console.WriteLine ("在SQL Server中根据ID得到User表一条记录");return null;}}}
具体用户——AccessUser
using System;namespace AbstractFactory{public class AccessUser:IUser{//插入数据public void Insert(User user){Console.WriteLine ("在Access中给User表增加一条记录");}//获取数据public User GetUser(int id){Console.WriteLine ("在Access中根据ID得到User表一条记录");return null;}}}2.客户端代码如下:
客户端
using System;namespace AbstractFactory{class MainClass{public static void Main (string[] args){User user = new User ();Department department = new Department ();//IFactory factory = new AccessFactory ();IFactory factory = new SqlServerFactory ();IUser iuser = factory.CreateUser ();iuser.Insert (user);iuser.GetUser (1);IDepartment idepartment = factory.CreateDepartment ();idepartment.Insert (department);idepartment.GetDepartment (1);}}}3.运行结果
UML图
源码下载地址:https://gitee.com/ZhaoYongshuang/DesignPattern.git
阅读全文
1 0
- 设计模式—抽象工厂(十一)
- 设计模式(十一)——抽象工厂
- 设计模式(十一)抽象工厂模式
- 十一、抽象工厂模式——设计模式学习笔记
- Java设计模式《十一》抽象工厂模式
- (十一)抽象工厂模式
- 十一、抽象工厂模式
- Java设计模式——工厂模式(简单工厂、工厂方法 、抽象工厂 )
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 设计模式——抽象工厂模式
- 使用Dlib进行人脸识别(从Haar到Dlib)
- Linux 环境编程读书笔记1
- ServletRequest学习
- JAVA文件上传和下载
- (6)实现源码
- 设计模式(十一)——抽象工厂
- [微信小程序]根据图片宽高动态改变swiper(轮播图)组件宽高
- 06 Spring框架 依赖注入(三)多配置文件
- ehcache配置参数说明
- studio界面、快捷键
- iOS 获取当前网络的状态
- 简单的angular方法简介
- Qt学习- 第一章 什么是Qt
- 区间求和II