`
haouziwefe
  • 浏览: 126968 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

设计模式-Abstract Factory 模式

阅读更多

    在Abstract Factory模式中将具体的Product封装在具体Factory实现中,而客户仍只要面对Factory与Product的抽象介面,避免依赖于具体的Factory与Product,由于Factory封装了所必须的Product,所以要更换掉所有的元件,只要简单的抽换掉Factory就可以了,不用修改客户端的程式。

CustomDialog.java 
public class CustomDialog {    
private IButton button;    
private ITextField textField;        
public CustomDialog(IWidgetFactory widgetFactory) {        
setWidgetFactory(widgetFactory);    }        
// 由于客户端只依赖于抽象的工厂,工厂如何实作并无关客户端的事    
// 要抽换工厂并不需要改动客户端的程式    
public void setWidgetFactory(IWidgetFactory widgetFactory) {        
setButton(widgetFactory.getButton());        
setTextField(widgetFactory.getTextField());         
}    
public void layoutAllComponents() {        
// layout all components    }        
// 这边也是依赖抽象,实际改变了元件实例    
// 客户端代码也不用更改    
public void setButton(IButton button) {        
this.button = button;        
}        
public void setTextField(ITextField textField) {        
this.textField = textField;    
}        
public void showDialog() {        
this.paintDialog();        
button.paintButton();        
textField.paintTextField();    
}      
public void paintDialog() {        
System.out.println("custom dialog paints....");    
}} 

IButton.java 
public interface IButton {    
public void paintButton();
} 

ITextField.java 
public interface ITextField {    
public void paintTextField();
} 

IWidgetFactory.java 
public interface IWidgetFactory {    
public IButton getButton();    
public ITextField getTextField();
} 

MacButton.java 
public class MacButton implements IButton {    
public void paintButton() {        
System.out.println("Mac button paints....");    
}} 

WindowsButton.java 
public class WindowsButton implements IButton {    
public void paintButton() {        
System.out.println("Windows button paints....");    
}} 

MacTextField.java 
public class MacTextField implements ITextField {    
public void paintTextField() {        
System.out.println("Mac textField paints....");    
}} 

WindowsTextField.java 
public class WindowsTextField implements ITextField {    
public void paintTextField() {        
System.out.println("Windows textField paints....");    
}} 

MacWidgetFactory.java 
public class MacWidgetFactory implements IWidgetFactory {   
 public IButton getButton() {       
 return new MacButton();    
}        
public ITextField getTextField() {        
return new MacTextField();    
}} 

WindowsWidgetFactory.java 
public class WindowsWidgetFactory implements IWidgetFactory {    
public IButton getButton() {        
return new WindowsButton();    
}        
public ITextField getTextField() {        
return new WindowsTextField();    
}}

 
   
     
        <ul style="display:none;">
         
  • <img src='http://dl.iteye.com/upload/attachment/598618/7902cdd2-8f78-319f-ba44-7d1e2812a5a2-thumb.jpg' class='magplus' title='点击查看原始大小图片' />

  •          
             
  • 大小: 26.9 KB

  •         </ul>
         
       
       
         
       
     
    0
    0
    分享到:
    评论

    相关推荐

      Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

      Java设计模式是面向对象编程...在阅读《Chapter1___Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)》的相关资料时,你可以更深入地学习这些模式的细节,包括适用场景、优缺点以及如何在实际项目中实现。

      设计模式之-抽象工厂-AbstractFactory

      抽象工厂(Abstract Factory)设计模式是软件工程中一种重要的创建型设计模式,它提供了一种创建对象组的方式,这些对象属于同一族系并且彼此相关。这个模式的主要目标是定义一个接口,用于创建一族相关或相互依赖的...

      设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)

      设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML)

      对设计模式—Abstract Factory模式的认识

      ### 设计模式——Abstract Factory模式的认识 在软件工程领域,设计模式是一种被广泛接受的解决方案,用于解决在软件设计过程中常见的问题。其中,Abstract Factory模式是23种GoF(Gang of Four)设计模式之一,它...

      设计模式之Abstract Factory模式和代码实现

      在设计模式中,Abstract Factory模式是一种用来解决在不指定具体实现的情况下创建一系列相关或相互依赖对象的模式。在本文的上下文中,我们看到它被应用于一个奇幻RPG游戏的角色种族设计,每个种族(如人类、精灵)...

      C++设计模式--基于Qt4开源跨平台开发框架

      创建型模式如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂模式(Abstract Factory),主要关注对象的创建过程,旨在减少类之间的耦合度。结构型模式如适配器模式(Adapter)、装饰器模式...

      C#设计模式-吕震宇

      C#设计模式(6)-Abstract Factory Pattern C#设计模式(5)-Factory Method Pattern C#设计模式(4)-Simple Factory Pattern C#设计模式(3) - 设计原则(2) C#设计模式(2) - 设计原则(1) C#设计模式(1) - ...

      设计模式C++学习之抽象工厂模式(AbstractFactory)

      抽象工厂模式是设计模式中的一种结构型模式,它在C++编程中有着广泛的应用。这个模式主要用于创建一系列相关的对象,而无需指定它们的具体类。在本文中,我们将深入探讨抽象工厂模式的概念、工作原理以及在C++中的...

      java————23种设计模式-UML-类图及对应示例代码.doc

      Java 设计模式 - Abstract Factory Abstract Factory 是一种创建型模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这个模式的主要优点是客户类和工厂类分开,客户类可以无需修改...

      java设计模式---诙谐易懂版

      例如,代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、适配器模式(Adapter Pattern)、模板方法模式(Template ...

      C#设计模式之AbstractFactory

      "Abstract Factory"模式是其中一种,它属于创建型设计模式,旨在提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在这个模式中,抽象工厂类定义了一组创建产品的方法,这些方法都是抽象的,由...

      创建型-抽象工厂模式(Abstract Factory)

      此外,抽象工厂模式还可以与其他设计模式结合使用,比如工厂方法模式(Factory Method Pattern),在某些情况下,可以将抽象工厂模式的抽象工厂类设计为工厂方法模式,让子类决定实例化哪一个类。同时,抽象工厂模式...

      设计模式精解-GoF-23种设计模式解析--附C++源代码

      设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题。这些模式是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师,通常被称为GoF(Gang of Four),在他们的经典著作...

      创建型模式之抽象工厂模式(Abstract Factory Pattern)

      抽象工厂模式是设计模式中的一种创建型模式,其主要目的是为了解耦客户端代码与具体产品的实现。在软件工程中,当系统需要根据不同的平台、环境或者配置产生一系列相关对象,而这些对象之间的关系又非常复杂时,抽象...

      设计模式 创建型模式 Abstract Factory模式(抽象工厂)

      Abstract Factory模式 1 定义创建对象的接口,并封装对象的创建 2 将具体化类的工作延迟到了类中 3 创建创建一组相关对象或者说是一组相互依赖的对象 一般情况下,我们为了提高内聚和松耦合,经常会使用多态来...

      JAVA设计模式-chm版

      这类模式关注对象的创建过程,包括单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们提供了创建对象的不同策略,使代码更加灵活...

      23种设计模式-UML-类图.docx

      "设计模式-UML类图" 设计模式是软件开发中的一种解决方案,它提供了一种通用的解决方案来解决软件设计中常见的问题。UML(Unified Modeling Language)是一种标准化的建模语言,用于描述软件系统的结构和行为。下面...

      26种设计模式-----pdf

      创建型模式主要关注对象的创建过程,比如单例模式(Singleton)、工厂模式(Factory)和抽象工厂模式(Abstract Factory)。它们提供了一种在不指定具体类的情况下创建对象的方法,增加了代码的灵活性和可扩展性。 ...

      c++设计模式-工厂方法模式

      工厂方法模式是面向对象设计模式中的一个创建型模式,它提供了一种封装对象创建过程的方式,使得具体的对象创建过程可以延迟到子类中进行。在C++编程中,工厂方法模式广泛应用于各种软件设计中,因为它能有效地解耦...

      设计模式-王翔 全本

      创建型模式关注对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory),它们旨在提供一种创建对象的最佳方式,同时保持系统的灵活性和扩展性。结构型模式涉及...

    Global site tag (gtag.js) - Google Analytics