- 浏览: 25979 次
- 性别:
- 来自: 上海
文章分类
接口的思想就是“封装隔离”。接口是系统可插拔性的保证。
1.优先使用接口
2.在既要定义子类的行为,又要为子类提供公共的功能时选择抽象类。
public interface Api {
public void operation(String s);
}
public class ImplA implements Api {
public void operation(String s) {
System.out.println("ImplA" + s);
}
}
public class ImplB implements Api {
public void operation(String s) {
System.out.println("ImplB" + s);
}
}
public class Factory {
//私有构造器,避免客户端无谓地创造简单工厂实例
private Factory(){}
public static Api createApi(int condition) {
Api api = null;
if(condition == 1) {
api = new ImplA;
} else if(condition == 2) {
api = new ImplB;
}
return api;
}
}
在客户端使用时就可以用下面代码:
Api api = Factory.createApi(1);
简单工厂也可以来创建抽象类或者普通类的实例。
缺点:
客户端调用工厂时传入参数,就说明客户端知道每个参数的含义。暴露了一部分细节。
利用发射加上配置文件
Properties p = new Properties();
InputStream in = Test.class.getResourceAsStream("Design.properties");
p.load(in);
api = (Api)Class.forName(p.getProperty("ImplClass")).newInstance();
1.优先使用接口
2.在既要定义子类的行为,又要为子类提供公共的功能时选择抽象类。
public interface Api {
public void operation(String s);
}
public class ImplA implements Api {
public void operation(String s) {
System.out.println("ImplA" + s);
}
}
public class ImplB implements Api {
public void operation(String s) {
System.out.println("ImplB" + s);
}
}
public class Factory {
//私有构造器,避免客户端无谓地创造简单工厂实例
private Factory(){}
public static Api createApi(int condition) {
Api api = null;
if(condition == 1) {
api = new ImplA;
} else if(condition == 2) {
api = new ImplB;
}
return api;
}
}
在客户端使用时就可以用下面代码:
Api api = Factory.createApi(1);
简单工厂也可以来创建抽象类或者普通类的实例。
缺点:
客户端调用工厂时传入参数,就说明客户端知道每个参数的含义。暴露了一部分细节。
利用发射加上配置文件
Properties p = new Properties();
InputStream in = Test.class.getResourceAsStream("Design.properties");
p.load(in);
api = (Api)Class.forName(p.getProperty("ImplClass")).newInstance();
发表评论
-
访问者模式Visitor预留通路,回调实现
2014-03-13 16:55 393表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
桥接模式Bridge分离抽象和实现
2014-03-13 16:55 507将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接 ... -
职责链模式Chain of Responsibility分离职责,动态组合
2014-03-12 17:25 343使多个对象都有机会处 ... -
装饰模式Decorator动态组合
2014-03-12 17:00 279动态地给一个对象添加 ... -
解释器模式Interpreters分离实现,解释执行
2014-03-12 16:27 318给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解 ... -
享元模式Flyweight分离与共享
2014-03-12 13:20 304运用共享技术有效地支持大量细粒度的对象。 安全实体:就是被系 ... -
备忘录模式Memento保存和回复内部状态
2014-03-11 17:47 434在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 ... -
状态模式State根据状态来分离和选择行为
2014-03-11 17:20 404允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改 ... -
策略模式Strategy分离算法,选择实现
2014-03-11 15:26 418迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信 ... -
模板方法模式Templete Method 固定算法骨架
2014-03-11 11:15 539定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法 ... -
组合模式Composite统一叶子对象和组合对象
2014-03-07 18:18 309将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使 ... -
迭代器模式Iterator 控制访问聚合对象中的元素
2014-03-07 17:57 414提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该 ... -
命令模式Command 封装请求
2014-03-07 16:26 382将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 ... -
观察者模式Observer订阅模式-触发联动
2014-03-07 11:19 387定义对象间的一种一对 ... -
代理模式Proxy 为别人做嫁衣(控制对象访问)
2014-03-06 00:39 339为其他对象提供一种代理以控罪对这个对象的访问。 代理大致被分为 ... -
中介者模式Mediator 封装交互
2014-03-06 00:19 372用一个中介对象来封装 ... -
原型模式Prototype 克隆生成对象
2014-03-06 00:19 570用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ... -
生成器模式Builder 分离整体构建算法和部件构造
2014-03-06 00:19 310将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ... -
抽象工厂模式 Abstract Factory 选择产品簇的实现
2014-03-06 00:20 424工厂方法模式或简单工 ... -
工厂方法模式Factory Method延迟到子类来选择实现
2014-03-05 18:12 951定义一个用于创建对象 ...
相关推荐
简单工厂模式是一种静态工厂方法,它提供一个公共的工厂类来创建对象。这个工厂类根据传入的参数或者条件来决定创建哪种类型的实例。在简单工厂模式中,通常有一个中心工厂类,它负责知道如何创建各种产品。这种模式...
简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要知道具体的产品类型,而无需了解如何创建对象。简单工厂模式适用于产品种类较少且相对固定的情况...
1. **简单工厂方法**:工厂类通常包含一个静态工厂方法,如`Calculator createCalculator(String type)`,该方法根据传入的类型参数(如"加法"、"减法"等)返回相应的计算器对象。这样,客户端只需传入所需的运算...
**简单工厂模式** 是最基础的工厂模式形式,它提供一个静态方法或类来创建对象。在这个模式中,工厂是负责创建对象的中心角色,它知道如何创建所有相关的对象。客户端通过调用工厂的静态方法获取所需的产品。简单...
### 设计模式——简单工厂模式解析与应用实例 #### 一、简单工厂模式概述 简单工厂模式(Simple Factory Pattern)是一种常用的创建型设计模式。它提供了一种方式来封装对象的创建过程,使得整个系统更加灵活,...
1. **简单工厂模式**:也称为静态工厂模式,它通常包含一个静态方法,该方法根据输入参数返回相应的产品对象。这种方法简单易用,但不支持工厂类的扩展,且违反了"开闭原则"。 2. **工厂方法模式**:定义一个用于...
简单工厂模式是软件设计模式中的一种,它属于创建型模式,旨在提供一个统一的接口,用来创建一组相关或相互依赖的对象。在这个例子中,我们关注的是如何使用C#语言实现这个模式,特别是在披萨店的场景下。 在披萨店...
1. **简单工厂模式**:这是最基础的工厂模式形式,它包含一个静态工厂方法,用于创建对象。简单工厂模式适用于产品种类较少且不经常变动的情况。 2. **工厂方法模式**:在工厂方法模式中,每个子类对应一个产品,每...
### Java工厂模式—简单工厂模式 #### 一、引言 简单工厂模式并不是GoF设计模式之一,但它作为设计模式的基础,在实际项目中被广泛使用。简单工厂模式的主要目的是将对象的创建与对象的使用分离,使代码更加灵活,...
在简单工厂模式中,一个工厂类负责创建对象,而客户端代码则不再直接创建对象,而是通过调用工厂类的静态方法来获取所需的实例。 在Java中,我们通常使用`new`关键字来实例化对象,但这存在一些问题。例如,当需要...
1. **简单工厂模式**:由一个静态方法或单一工厂类负责创建所有类型的产品,当产品类型增加时,可能需要修改工厂类,违背了开闭原则。 2. **工厂方法模式**:定义一个创建对象的接口,让子类决定实例化哪一个类。...
本资源“一例读懂设计模式-单例模式、简单工厂模式.zip”旨在帮助初学者通过实例深入理解这两种重要设计模式:单例模式和简单工厂模式。以下是关于这两个模式的详细讲解。 1. **单例模式**: 单例模式是一种限制类...
- 简单工厂模式:一个静态工厂类负责创建所有类型的对象,它通常用于创建对象种类较少的情况。 - 工厂方法模式:将具体的对象创建过程交给子类处理,每个子类对应一个具体的产品对象,实现了多态性。 - 抽象工厂...
简单工厂模式中,有一个静态工厂类负责创建所有产品,而在工厂方法模式中,产品创建的责任被转移到了具体的子类中,这样更符合面向对象的原则,同时也更利于扩展。 总的来说,工厂方法模式是一种实用的设计模式,它...
工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...
简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的工厂类来创建对象。这个工厂类通常包含一个或多个静态方法,用于根据输入参数创建不同类型的实例。这种模式的优点在于客户端代码无需...
简单工厂模式通常由一个静态工厂类来负责创建对象,这个静态工厂类根据传入的参数或条件来决定创建哪种类型的实例。在Java中,这个工厂类可以是一个普通的类,包含静态方法来生产对象。这种模式简单易用,但当产品...
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,降低了系统与具体创建对象之间的耦合度。在这个模式中,有一个名为“工厂”的类,负责创建对象,客户端通过调用工厂的方法...
在Java编程语言中,工厂模式通常分为简单工厂模式、工厂方法模式和抽象工厂模式三种类型。这些模式都是围绕着一个中心思想:将对象的实例化过程封装起来,使代码更加灵活且易于维护。 1. **简单工厂模式**: 简单...
**简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...