- 浏览: 23410 次
- 性别:
- 来自: 上海
文章分类
接口的思想就是“封装隔离”。接口是系统可插拔性的保证。
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 316表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
桥接模式Bridge分离抽象和实现
2014-03-13 16:55 427将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接 ... -
职责链模式Chain of Responsibility分离职责,动态组合
2014-03-12 17:25 309使多个对象都有机会处 ... -
装饰模式Decorator动态组合
2014-03-12 17:00 243动态地给一个对象添加 ... -
解释器模式Interpreters分离实现,解释执行
2014-03-12 16:27 258给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解 ... -
享元模式Flyweight分离与共享
2014-03-12 13:20 271运用共享技术有效地支持大量细粒度的对象。 安全实体:就是被系 ... -
备忘录模式Memento保存和回复内部状态
2014-03-11 17:47 404在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 ... -
状态模式State根据状态来分离和选择行为
2014-03-11 17:20 353允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改 ... -
策略模式Strategy分离算法,选择实现
2014-03-11 15:26 384迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信 ... -
模板方法模式Templete Method 固定算法骨架
2014-03-11 11:15 509定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法 ... -
组合模式Composite统一叶子对象和组合对象
2014-03-07 18:18 285将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使 ... -
迭代器模式Iterator 控制访问聚合对象中的元素
2014-03-07 17:57 383提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该 ... -
命令模式Command 封装请求
2014-03-07 16:26 335将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 ... -
观察者模式Observer订阅模式-触发联动
2014-03-07 11:19 340定义对象间的一种一对 ... -
代理模式Proxy 为别人做嫁衣(控制对象访问)
2014-03-06 00:39 298为其他对象提供一种代理以控罪对这个对象的访问。 代理大致被分为 ... -
中介者模式Mediator 封装交互
2014-03-06 00:19 341用一个中介对象来封装 ... -
原型模式Prototype 克隆生成对象
2014-03-06 00:19 539用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ... -
生成器模式Builder 分离整体构建算法和部件构造
2014-03-06 00:19 276将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ... -
抽象工厂模式 Abstract Factory 选择产品簇的实现
2014-03-06 00:20 367工厂方法模式或简单工 ... -
工厂方法模式Factory Method延迟到子类来选择实现
2014-03-05 18:12 890定义一个用于创建对象 ...
相关推荐
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...
简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通常它根据自变量的不同返回不同的类的实例。 简单工厂模式的实质是由一个工厂类根据传入的参量,动态决定...
简单工厂模式又叫静态工厂模式,顾名思义,它是用来实例化目标类的静态类。下面我主要通过一个简单的实例说明简单工厂及其优点。 单态模式的定义: Singleton模式主要作用是保证在Java应用程序中,一个类Class只有...
设计模式 C# 简单工厂模式,又叫做静态工厂方法模式,这是一个很简单的模式,它不属于GOF二十三个基本模式之中的一个,但它是一个很有用的模式,有用得着的时候可以使用它。
Java 常用创建型设计模式中,工厂模式下的三种子模式:简单工厂(静态工厂)、工厂方法模式、抽象工厂模式的源码
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...
用c++实现的简单工厂模式,其功能是一个简单计算功能
为什么要在工厂模式中使用静态方法 工厂模式是一种封装对象创建的方法。如果不使用工厂模式,你需要直接使用构造方法来创建对象: Foo x = new Foo() 使用工厂模式,可以取而代之的调用工厂方法: Foo x...
主要介绍了Java设计模式之静态工厂模式,简单说明了静态工厂模式的概念、原理、实现与使用方法,需要的朋友可以参考下
简单工厂模式 【静态工厂方法模式】(Static Factory Method) 是类的创建模式 工厂模式的几种形态: 1、简单工厂模式(Simple Factory)又叫做 静态工厂方法模式(Static Factory Method) 2、工厂方法模式(Factory ...
C#工厂设计模式简单实例——计算器 public class Factory { //创建一个静态方法 public static Operation CreateOper(int a, int b, string oper) { //创建一个Operation对象 Operation op = null; switch ...
使用工厂方法模式构建简易四则计算器,并增加指数和对数两种二元运算,类图。
简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出那一种产品类的实例。 1.工厂模式的几种形态 工厂模式专门负责将大量有共同接口的类实例化...
简单工厂模式又叫静态工厂方法模式,工厂模式家族中最简单的一种模式。这个模式的基本工作方式: 通过一个工厂来决定创建哪种具体的产品实例。 下面是一个简单的工厂实例: def create_animal(name): if name == '...
它又称为静态工厂方法模式,属于类的创建型模式。 简单工厂模式的UML类图 简单工厂模式的程序通过封装继承来降低程序的耦合度,设计模式使得程序更加的灵活,易修该,易于复用。 简单工厂是在工厂类中做判断,从而...
工厂类中的创建方法是静态的(static)所以简单工厂又称为静态工厂。 b.工厂方法: 在工厂方法设计模式中,工厂类不再负责产品的实列创建,而是将产品实例的创建交给抽象子类来 来负责创建。 c.抽象工厂:使用...
一个具体工厂创建一个产品族,一个产品族是不同系列产品的组合,产品的创建的逻辑分在在每个具体工厂类...如果没有应对“多系列对象创建”的需求变化,则没有必要使用抽象工厂模式,这时候使用简单的静态工厂完全可以。
工厂模式是创建型模式的一种,分为简单工厂模式,工厂模式,抽象工厂模式,简单工厂可以称之为工厂模式的一个特例 先用一段简单的代码说明一下,现在假设我们是顾客,需要苹果味饮料和香蕉味饮料 <?php class ...
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 将“类实例...
先来看看,简单工厂模式——也叫静态工厂模式,这里举个例子:你要去买一台手机,你不用关心手机是怎么生产出来的,里面的零件具体又是怎么制造的,这些通通都交给工厂去处理,你尽管去买手机就好了。 简单工厂模式...