- 浏览: 187827 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. 创建型模式 (4) 工厂模式
1. 简单工厂模式
2. 标准工厂方法模式
3. 标准工厂方法模式
它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。[/b] 有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过new就可以完成创建的对象,无需使用工厂模式。 工厂模式一般分为三类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Method)与抽象工厂模式(Abstract Factory)。 将简单工厂模式(Simple Factory)看为工厂方法模式的一种特例,两者归为一类。 工厂模式组成: 1. 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。 2. 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。 3. 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品。
1. 简单工厂模式
package com.andrew.pattern0104.factory.modal01; public class Circle { public void draw() { System.out.println("Inside Circle draw method."); } } package com.andrew.pattern0104.factory.modal01; public class Rectangle { public void draw() { System.out.println("Inside Rectangle draw method."); } } package com.andrew.pattern0104.factory.modal01; public class Square { public void draw() { System.out.println("Inside Square draw method."); } }
package com.andrew.pattern0104.factory.modal01; /** * 1. 简单工厂模式 * * @author andrew * @date 2018/06/12 */ public class FactoryClient { public static void main(String[] args) { Circle shape1 = new Circle(); shape1.draw(); Rectangle shape2 = new Rectangle(); shape2.draw(); Square shape3 = new Square(); shape3.draw(); } }
2. 标准工厂方法模式
package com.andrew.pattern0104.factory.modal02; public interface Shape { void draw(); }
package com.andrew.pattern0104.factory.modal02; public class Rectangle implements Shape { @Override public void draw() { System.out.println("Inside Rectangle draw method."); } } package com.andrew.pattern0104.factory.modal02; public class Square implements Shape { @Override public void draw() { System.out.println("Inside Square draw method."); } } package com.andrew.pattern0104.factory.modal02; public class Circle implements Shape { @Override public void draw() { System.out.println("Inside Circle draw method."); } }
package com.andrew.pattern0104.factory.modal02; public class ShapeFactory { public Shape getShape(String shapeType) { if (null == shapeType) { return null; } if (shapeType.equalsIgnoreCase("CIRCLE")) { return new Circle(); } else if (shapeType.equalsIgnoreCase("RECTANGLE")) { return new Rectangle(); } else if (shapeType.equalsIgnoreCase("SQUARE")) { return new Square(); } return null; } }
package com.andrew.pattern0104.factory.modal02; /** * 2. 标准工厂模式 * * @author andrew * @date 2018/06/12 */ public class FactoryClient { public static void main(String[] args) { ShapeFactory shapeFactory = new ShapeFactory(); Shape shape1 = shapeFactory.getShape("CIRCLE"); shape1.draw(); Shape shape2 = shapeFactory.getShape("RECTANGLE"); shape2.draw(); Shape shape3 = shapeFactory.getShape("SQUARE"); shape3.draw(); } } 运行结果: Inside Circle draw method. Inside Rectangle draw method. Inside Square draw method.
3. 标准工厂方法模式
package com.andrew.pattern0104.factory.modal03; public interface Shape { void draw(); }
package com.andrew.pattern0104.factory.modal03; public class Circle implements Shape { @Override public void draw() { System.out.println("Inside Circle draw method."); } } package com.andrew.pattern0104.factory.modal03; public class Rectangle implements Shape { @Override public void draw() { System.out.println("Inside Rectangle draw method."); } } package com.andrew.pattern0104.factory.modal03; public class Square implements Shape { @Override public void draw() { System.out.println("Inside Square draw method."); } }
package com.andrew.pattern0104.factory.modal03; public interface ShapeFactory { Shape getShape(); } package com.andrew.pattern0104.factory.modal03; public class CircleFactory implements ShapeFactory { @Override public Circle getShape() { return new Circle(); } } package com.andrew.pattern0104.factory.modal03; public class RectangleFactory implements ShapeFactory { @Override public Rectangle getShape() { return new Rectangle(); } } package com.andrew.pattern0104.factory.modal03; public interface ShapeFactory { Shape getShape(); }
package com.andrew.pattern0104.factory.modal03; /** * 3. 严格工厂模式 * * @author andrew * @date 2018/06/12 */ public class FactoryClient { public static void main(String[] args) { CircleFactory circleFactory = new CircleFactory(); Circle circle = circleFactory.getShape(); circle.draw(); RectangleFactory rectangleFactory = new RectangleFactory(); Rectangle rectangle = rectangleFactory.getShape(); rectangle.draw(); SquareFactory squareFactory = new SquareFactory(); Square square = squareFactory.getShape(); square.draw(); } } 运行结果: Inside Circle draw method. Inside Rectangle draw method. Inside Square draw method.
发表评论
-
3. 行为型模式 (11) 解释器模式
2018-11-08 10:39 3943. 行为型模式 (11) 解释器模式 解释器模式(In ... -
3. 行为型模式 (10) 中介者模式
2018-11-08 09:56 3683. 行为型模式 (10) 中介者模式 中介者模式(Me ... -
3. 行为型模式 (9) 访问者模式
2018-11-07 14:30 3703. 行为型模式 (9) 访问者模式 访问者模式(Vis ... -
3. 行为型模式 (8) 状态模式
2018-11-07 09:13 4543. 行为型模式 (8) 状态模式 状态模式(State ... -
3. 行为型模式 (7) 备忘录模式
2018-11-06 14:27 4323. 行为型模式 (7) 备忘录模式 备忘录模式(Mem ... -
3. 行为型模式 (6) 命令模式
2018-11-06 11:40 3813. 行为型模式 (6) 命令模式 命令模式(Comma ... -
3. 行为型模式 (5) 责任链模式
2018-11-06 09:40 4333. 行为型模式 (5) 责任链模式 责任链模式(Cha ... -
3. 行为型模式 (4) 迭代子模式
2018-11-05 14:23 3533. 行为型模式 (4) 迭代 ... -
3. 行为型模式 (3) 观察者模式
2018-11-02 16:17 4473. 行为型模式 (3) 观察者模式 当对象间存在一对多 ... -
3. 行为型模式 (2) 模板方法模式
2018-11-02 09:26 4173. 行为型模式 (2) 模板方法模式 在模板模式(Te ... -
3. 行为型模式 (1) 策略模式
2018-11-01 09:23 4393. 行为型模式 (1) 策略模式 在策略模式(Stra ... -
2. 结构型模式 (3) 代理模式
2018-10-29 11:26 3742. 结构型模式 (3) 代理模式 代理模式(Proxy ... -
2. 结构型模式 (7) 享元模式
2018-10-30 13:27 4142. 结构型模式 (7) 享元模式 享元模式(Flywe ... -
2. 结构型模式 (6) 组合模式
2018-10-30 09:50 3652. 结构型模式 (6) 组合模式 组合模式(Compo ... -
2. 结构型模式 (2) 装饰者模式
2018-10-29 09:30 4102. 结构型模式 (2) 装饰器模式 装饰器模式(Dec ... -
2. 结构型模式 (5) 桥接模式
2018-10-30 09:11 3942. 结构型模式 (5) 桥接模式 桥接(Bridge) ... -
2. 结构型模式 (4) 外观模式
2018-10-29 14:20 3502. 结构型模式 (4) 外观模式 外观模式(Fac ... -
2. 结构型模式 (1) 适配器模式
2018-10-26 15:35 3852. 结构型模式 (1) 适配器模式 将一个类的接口转换 ... -
1. 创建型模式 (2) 原型模式
2018-09-12 13:46 7411. 创建型模式 (2) 原型模式 用原型实例指定创建对 ... -
1. 创建型模式 (3) 建造者模式
2018-10-25 16:28 3711. 创建型模式 (3) 建造 ...
相关推荐
创建型设计模式是软件设计模式中的重要类别,主要用于对象的创建。这些模式提供了一种在创建对象时封装变化的方式,使得代码更具可扩展性和可维护性。以下是对几种主要创建型设计模式的详细阐述: 1. 单例模式:...
【设计模式之创建型模式实验】 创建型设计模式主要关注对象的创建,它们提供了一种在不指定具体类的情况下创建对象的方式,增强了系统的灵活性和可扩展性。在本实验中,我们将探讨五种常见的创建型设计模式:简单...
1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:模板方法模式、命令模式、...
在提供的"1.Singleton 单件(创建型模式).wmv"视频文件中,可能详细讲解了Singleton模式的概念、实现方式、优缺点以及在C#中的具体应用实例,包括如何在实际项目中适当地使用和避免滥用Singleton模式。观看该视频可以...
设计模式分为三大类:创建型模式、结构型模式和行为型模式。 **创建型模式**关注的是对象的创建。共有五种创建型模式: 1. **工厂方法模式**:它定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法...
创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter ...
2. **工厂方法模式**:这也是创建型模式,与简单工厂模式不同,它定义了创建对象的接口,但让子类决定实例化哪一个类。这种模式允许系统在不修改代码的情况下,更换产品类或添加新产品。 3. **抽象工厂模式**:创建...
本资源包"设计模式之创建型模式"包含了对工厂模式和单态模式的详细讲解,是初学者深入理解这些概念的理想资料。 首先,我们来看工厂模式。工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂...
抽象工厂模式是创建型设计模式中的一种,用于创建一系列相关或相互依赖的对象,而无需指定其具体类。抽象工厂模式强调产品的系列,对于有多个产品等级结构的系统非常有用。在抽象工厂模式中,一个工厂负责创建多个...
简单工厂模式是Java设计模式中创建型模式的一种,也被称为静态工厂方法模式。该模式的主要思想是由一个专门的工厂类来负责创建其他类的实例。简单工厂模式通过封装创建对象的过程,使得调用者无需关心对象的具体创建...
Factory Method 工厂方法模式(创建型模式).wmv
工厂模式是一种常用的创建型设计模式,它提供了一个创建对象的接口,但具体的实例化工作由子类来完成。这种延迟初始化的策略使得系统更加灵活,易于扩展。 **二、抽象工厂模式**: 抽象工厂模式是工厂模式的扩展,...
**简单工厂模式**是软件设计模式中的一种,属于创建型模式。在Java编程中,它是一种用于创建对象的简便方法,将对象的实例化过程封装到一个单独的工厂类中,使得客户端代码无需直接调用具体类的构造函数,而是通过...
这个“新版设计模式手册”深入浅出地介绍了设计模式的三大类:创建型模式、结构型模式和行为模式,为开发者提供了一套详细的设计说明。 一、创建型模式 创建型模式主要关注对象的创建过程,它们的目标是使得对象的...
工厂方法模式是创建型模式的基础,它定义了一个创建对象的接口,但让子类决定实例化哪一个类。在这个例子中,用于实现四则运算的计算器。该模式使得计算器的实例化延迟到子类中,这样可以根据需求创建不同的计算器...
创建型模式是软件工程中23种设计模式中的一类,主要目的是使得对象的创建与使用相分离,从而使系统更加灵活。创建型模式包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式等。这些模式各有其特定的...
创建型模式是设计模式的一种分类,主要关注对象的创建过程,旨在抽象和隔离实例化过程,提高代码的灵活性和可复用性。本篇文章将详细探讨Java中的几种创建型设计模式,并通过具体的DEMO来阐述它们的应用。 1. 单例...
虽然不是严格意义上的创建型模式,但组合模式与创建型模式密切相关,因为它允许我们构建树形结构的对象。它将简单对象和组合对象以一致的方式处理,使客户端代码可以透明地操作单个元素或整个对象结构。 以上创建...
创建型模式是设计模式中的一个重要类别,它关注于对象的创建过程,帮助开发者封装创建细节,使系统独立于具体对象的创建方式。 1. **Singleton(单例模式)** 单例模式确保一个类只有一个实例,并提供全局访问点...
创建型模式包括五种主要类型:单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype)。这些模式都致力于在不同的场景下提供对象的创建方式,以降低...