知识大全 外观设计模式组图(Fa?ade pattern)
Posted 客户
篇首语:丈夫志四海,万里犹比邻。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 外观设计模式组图(Fa?ade pattern)相关的知识,希望对你有一定的参考价值。
外观设计模式组图(Fa?ade pattern) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
描述 外观模式(Fa?ade pattern)涉及到子系统的一些类 所谓子系统 是为提供一系列相关的特征(功能)而紧密关联的一组类 例如 一个Account类 Address类和CreditCard类相互关联 成为子系统的一部分 提供在线客户的特征 在真实的应用系统中 一个子系统可能由很多类组成 子系统的客户为了它们的需要 需要和子系统中的一些类进行交互 客户和子系统的类进行直接的交互会导致客户端对象和子系统(Figure )之间高度耦合 任何的类似于对子系统中类的接口的修改 会对依赖于它的所有的客户类造成影响 > 外观模式(Fa?ade pattern)很适用于在上述情况 外观模式(Fa?ade pattern)为子系统提供了一个更高层次 更简单的接口 从而降低了子系统的复杂度和依赖 这使得子系统更易于使用和管理 外观是一个能为子系统和客户提供简单接口的类 当正确的应用外观 客户不再直接和子系统中的类交互 而是与外观交互 外观承担与子系统中类交互的责任 实际上 外观是子系统与客户的接口 这样外观模式降低了子系统和客户的耦合度(Figure ) > 从Figure 中我们可以看到 外观对象隔离了客户和子系统对象 从而降低了耦合度 当子系统中的类进行改变时 客户端不会像以前一样受到影响 尽管客户使用由外观提供的简单接口 但是当需要的时候 客户端还是可以视外观不存在 直接访问子系统中的底层次的接口 这种情况下 它们之间的依赖/耦合度和原来一样 例子 让我们建立一个应用 ( ) 接受客户的详细资料(账户 地址和信用卡信息) ( ) 验证输入的信息 ( ) 保存输入的信息到相应的文件中 这个应用有三个类 Account Address和CreditCard 每一个类都有自己的验证和保存数据的方法 Listing : AccountClass public class Account String firstName; String lastName; final String ACCOUNT_DATA_FILE = AccountData txt ; public Account(String fname String lname) firstName = fname; lastName = lname; public boolean isValid() /* Let s go with simpler validation here to keep the example simpler */ … … public boolean save() FileUtil futil = new FileUtil(); String dataLine = getLastName() + + getFirstName(); return futil writeToFile(ACCOUNT_DATA_FILE dataLine true true); public String getFirstName() return firstName; public String getLastName() return lastName; Listing : Address Class public class Address String address; String city; String state; final String ADDRESS_DATA_FILE = Address txt ; public Address(String add String cty String st) address = add; city = cty; state = st; public boolean isValid() /* The address validation algorithm could be plex in real world applications Let s go with simpler validation here to keep the example simpler */ if (getState() trim() length() < ) return false; return true; public boolean save() FileUtil futil = new FileUtil(); String dataLine = getAddress() + + getCity() + + getState(); return futil writeToFile(ADDRESS_DATA_FILE dataLine true true); public String getAddress() return address; public String getCity() return city; public String getState() return state; Listing : CreditCard Class public class CreditCard String cardType; String cardNumber; String cardExpDate; final String CC_DATA_FILE = CC txt ; public CreditCard(String ccType String ccNumber String ccExpDate) cardType = ccType; cardNumber = ccNumber; cardExpDate = ccExpDate; public boolean isValid() /* Let s go with simpler validation here to keep the example simpler */ if (getCardType() equals(AccountManager VISA)) return (getCardNumber() trim() length() == ); if (getCardType() equals(AccountManager DISCOVER)) return (getCardNumber() trim() length() == ); if (getCardType() equals(AccountManager MASTER)) return (getCardNumber() trim() length() == ); return false; public boolean save() FileUtil futil = new FileUtil(); String dataLine = getCardType() + + getCardNumber() + + getCardExpDate(); return futil writeToFile(CC_DATA_FILE dataLine true true); public String getCardType() return cardType; public String getCardNumber() return cardNumber; public String getCardExpDate() return cardExpDate; > 让我们建立一个客户AccountManager 它提供用户输入数据的用户界面 Listing : Client AccountManager Class public class AccountManager extends JFrame public static final String newline = \\n ; public static final String VALIDATE_SAVE = Validate & Save ; … … public AccountManager() super( Facade Pattern Example ); cmbCardType = new JComboBox(); cmbCardType addItem(AccountManager VISA); cmbCardType addItem(AccountManager MASTER); cmbCardType addItem(AccountManager DISCOVER); … … //Create buttons JButton validateSaveButton = new JButton(AccountManager VALIDATE_SAVE); … … public String getFirstName() return txtFirstName getText(); … … //End of class AccountManager 当客户AccountManage运行的时候 展示的用户接口如下 > 为了验证和保存输入的数据 客户AccountManager需要 ( ) 建立Account Address和CreditCard对象 ( ) 用这些对象验证输入的数据 ( ) 用这些对象保存输入的数据 下面是对象间的交互顺序图 > 在这个例子中应用外观模式是一个很好的设计 它可以降低客户和子系统组件(Address Account和CreditCard)之间的耦合度 应用外观模式 让我们定义一个外观类CustomerFacade (Figure and Listing ) 它为由客户数据处理类(Address Account和CreditCard)所组成的子系统提供一个高层次的 简单的接口 CustomerFacade address:String city:String state:String cardType:String cardNumber:String cardExpDate:String fname:String lname:String setAddress(inAddress:String) setCity(inCity:String) setState(inState:String) setCardType(inCardType:String) setCardNumber(inCardNumber:String) setCardExpDate(inCardExpDate:String) setFName(inFName:String) setLName(inLName:String) saveCustomerData() > Listing : CustomerFacade Cl cha138/Article/program/Java/gj/201311/27533相关参考
知识大全 Java设计模式例子 FactoryMethod Pattern
Java设计模式例子FactoryMethodPattern 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
备忘录模式(MementoPattern) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 描述
Java移动设备D图形:M3G快速模式(组图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本
现在软件设计里到处都是模式框架有次朋友问什么是模式?我也在学习中就我的学习经验给出以下小结(注意个人观点仅供参考欢迎指正) .什么是模式? 模式即pattern其实就是解决某一类问题的
摘要 设计规范只表示纯粹的想法但项目的成功来说实现这些规范是必须的传统的实现方式是代码评审Hammurapi是一个遵循设计的工具提供了自动而且一致的方式来实现设计规范因此使代码评审更加有效而
在javautilregex包中包括了两个类Pattern(模式类)和Matcher(匹配器类)Pattern类是用来表达和陈述所要搜索模式的对象Matcher类是真正影响搜索的对象另加一个新的例
数据库PL/SQL异常处理(组图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在设计PL/S
C#DesignPatterns(2)- 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Str
知识大全 C# Design Patterns (3) - Decorator
C#DesignPatterns(3)-Decorator 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
知识大全 C# Design Patterns (4) - Proxy
C#DesignPatterns(4)-Proxy 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!