第一范文网 - 专业文章范例文档资料分享平台

郑州大学软件学院设计模式

来源:用户分享 时间:2025/5/25 22:03:24 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

简单工厂模式

实例一:简单电视机工厂

某电视机厂专为各知名电视机品牌代工生产各类电视机,当需要海尔牌电视机时只需要在调用该工厂的工厂方法时传入参数“Haier”,需要海信电视机时只需要传入参数“Hisense”,工厂可以根据传入的不同参数返回不同品牌的电视机。现使用简单工厂模式来模拟该电视机工厂的生产过程。 public class Client { public static void main(String args[]) {

try {

TV tv; String

brandName=XMLUtilTV.getBrandName(); tv=TVFactory.produceTV(brandName); tv.play(); }

catch(Exception e) { System.out.println(e.getMessage()); } } }

public class HaierTV implements TV { public void play() { System.out.println(\海尔电视机播放中......\ } }

public class HisenseTV implements TV { public void play()

{

System.out.println(\海信电视机播放中......\ } }

public interface TV { public void play(); }

public class TVFactory {

public static TV produceTV(String brand) throws Exception { if(brand.equalsIgnoreCase(\ { System.out.println(\电视机工厂生产海尔电视机!\ return new HaierTV(); } else

if(brand.equalsIgnoreCase(\ { System.out.println(\电视机工厂生产海信电视机!\ return new HisenseTV(); } else { throw new Exception(\对不起,暂不能生产该品牌电视机!\ } } }

import javax.xml.parsers.*; import org.w3c.dom.*;

import org.xml.sax.SAXException; import java.io.*;

public class XMLUtilTV {

//该方法用于从XML配置文件中提取品牌名称,并返回该品牌名称 public static String getBrandName()

{ try { //创建文档对象 DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dFactory.newDocumentBuilder(); Document doc; doc = builder.parse(new File(\ //获取包含品牌名称的文本节点 NodeList nl = doc.getElementsByTagName(\ Node

classNode=nl.item(0).getFirstChild(); String

brandName=classNode.getNodeValue().trim();

return brandName; }

catch(Exception e) { e.printStackTrace(); return null; } } } 实例二:权限管理

在某OA系统中,系统根据对比用户在登录时输入的账号和密码以及在数据库中存储的账号和密码是否一致来进行身份验证,如果验证通过,则取出存储在数据库中的用户权限等级(以整数形式存储),根据不同的权限等级创建不同等级的用户对象,不同等级的用户对象拥有不同的操作权限。现使用简单工厂模式来设计该权限管理模块。 public class Administrator extends User { public Administrator() { System.out.println(\创建管理员对象!\ } public void diffOperation() { System.out.println(\管理员拥有创建和管理假条权限!\ } }

public class Client { public static void main(String args[]) {

try {

User user; UserDAO userDao=new UserDAO();

int

permission=userDao.findPermission(\n\ user=UserFactory.getUser(permission); user.sameOperation(); user.diffOperation(); }

catch(Exception e) { System.out.println(e.getMessage());

} } }

public class Employee extends User { public Employee() { System.out.println(\创建员工对象!\ } public void diffOperation() { System.out.println(\员工拥有创建假条权限!\ } }

public class Manager extends User { public Manager() { System.out.println(\创建经理对象!\ } public void diffOperation() { System.out.println(\经理拥有创建和审批假条权限!\ } }

public abstract class User { public void sameOperation() {

System.out.println(\修改个人资料!\ } public abstract void diffOperation(); }

public class UserDAO {

public int findPermission(String

userName,String userPassword)

{ if(\=userPassword) { return 2; } else { return -1; } } }

public class UserFactory { public static User getUser(int permission) { if(0==permission) { return new Employee(); } else if(1==permission) { return new Manager(); } else if(2==permission) { return new Administrator(); } else { return null; } } }

工厂方法模式

实例一:电视机工厂 将原有的工厂进行分割,为每种品牌的电视机提供一个子工厂,海尔工厂专门负责生产海尔电视机,海信工厂专门负责生产海信电

视机,如果需要生产TCL电视机或创维电视机,只需要对应增加一个新的TCL工厂或创维工厂即可,原有的工厂无须做任何修改,使得整个系统具有更加的灵活性和可扩展性。

public class Client { public static void main(String args[]) {

try {

TV tv;

TVFactory factory; factory=(TVFactory)XMLUtil.getBean(); tv=factory.produceTV(); tv.play(); }

catch(Exception e) { System.out.println(e.getMessage()); } } }

public class HaierTVFactory implements TVFactory {

public TV produceTV() { System.out.println(\海尔电视机工厂生产海尔电视机。\ return new HaierTV(); } }

public class HaierTV implements TV { public void play() { System.out.println(\海尔电视机播放中......\ }

}public class HisenseTVFactory implements TVFactory {

public TV produceTV() { System.out.println(\海信电视机工厂生产海信电视机。\ return new HisenseTV(); } }

public interface TV { public void play(); }

public interface TVFactory {

public TV produceTV(); }import javax.xml.parsers.*; import org.w3c.dom.*;

import org.xml.sax.SAXException; import java.io.*;

public class XMLUtil {

//该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象 public static Object getBean() { try { //创建文档对象 DocumentBuilderFactory dFactory =

DocumentBuilderFactory.newInstance(); DocumentBuilder builder =

dFactory.newDocumentBuilder(); Document doc; doc = builder.parse(new File(\ //获取包含类名的文本节点

搜索更多关于: 郑州大学软件学院设计模式 的文档
郑州大学软件学院设计模式.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9449s6o08m6d7jn4l22e_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top