设计模式的总结二:创造型模式
来源:互联网 发布:淘宝如何办理发票 编辑:程序博客网 时间:2024/06/05 16:05
一:创造型模式分类
1.子类别分类
对象创造式模型:主要完成对象创建,病将对象中的部分内容放到其他对象中创建。(抽象工厂模式,生成器模式,原型模式,单例模式)
类创造型模式:主要完成类实例化,并将类中的部分对象放到子类中创建。(工厂方法模式)
2.创造型模型分类
1)抽象工厂模式: 提供一个用于创建对象或相互依赖对象的接口,无需指定对象的具体类。
2)生成器模式: 将复杂的对象构造与其表示相互分离,使得在相同的构建过程中可以创建不同的表示。
3)工厂方法模式: 允许在子类中实现本类的实例化类。
4)原型模式: 使用一个原型实例来制定创建对象的种类,然后通过拷贝这些原型实现新对象的创建。
5)单例模式:确保某个类在系统中仅有一个实例,并提供一个访问他的全局访问点。
二:创造型模式的理解:
1.工厂方法模式
看名知意,类似工厂生产产品一样,创建实例对象。你提供一个类,通过工厂就能生产出这个类的对象来。
模式主要包含这样几个类:
产品类: 定义工厂方法中创建对象接口。
具体产品类:实现产品类接口。
工厂类: 声明工厂方法,返回一个产品类对象,可用于调用创建产品类对象的生成方法。
具体工厂类:重写用于创建具体产品类对象的方法。
2.应用场景:
1)当需要创建一个类时,而在编辑时不能确定这个类的类型时(需要运行时确定)
2)当一个类希望由其子类来指定所创建对象的具体类型时。
3)当我们想要定位被创建类,病获取相关信息时。
3.代码实现:
public interface Pet { //产品类(实例化工厂方法模式的基类) String getSound();}... ...public class Cat implements Pet { //具体产品类(实例化工厂方法模式的派生类) @Override public String getSound() { return "Meaw"; }}... ...public class Dog implements Pet { //具体产品类(实例化工厂方法模式的派生类) @Override public String getSound() { return "Bow"; }}... ...public class PetFactory { //工厂方法模式实现,并展现对象创建逻辑 public Pet getPet(String sound){ Pet pet = null; //工厂实例化对象的基本逻辑 if("Meaw".equals(sound)){ pet = new Cat(); }else if("Bow".equals(sound)){ pet = new Dog(); } return pet; }}... ...public class AbstractFactoryModel { //使用工厂方法模式 public static void main(String[] args){ //创建工厂 PetFactory factory = new PetFactory(); //实例化一个对象 Pet pet1 = factory.getPet("Bow"); showSound(pet1.getSound()); //实例化一个对象 Pet pet2 = factory.getPet("Meaw"); showSound(pet2.getSound()); } //你并不知道会创建那种对象 private static void showSound(String sound){ System.out.println("" + sound); }}
- 设计模式的总结二:创造型模式
- 设计模式的总结二:创造型模式-抽象工厂模式
- 创造设计模式
- Java经典23种设计模式之创造型模式(二)
- 23种设计模式--1创造型模式
- JAVA23种设计模式(1)-创造型模式6种
- 大话设计模式-总结(4)-行为型模式二组
- 设计模式总结之二创建型模式
- [设计模式笔记]二. 结构型模式总结
- 设计模式-行为型模式总结实例(二)
- 设计模式-结构型模式总结实例(二)
- 设计模式总结(二)
- 设计模式总结(二)
- 设计模式总结(二)
- 设计模式总结(二)
- 设计模式总结(二)
- 设计模式总结-Builder模式(二)
- 设计模式总结笔记<二> 工厂模式
- 请求重定向和请求转发的区别
- C++ 结点类创建
- 算法——回文数
- 应对最新的勒索病毒的方法
- bzoj3653&cogs2211 谈笑风生
- 设计模式的总结二:创造型模式
- 好好吃饭的挑战100天
- Unity网络服务器搭建【中高级】
- 数据链路层三个问题---封装成帧、透明传输、差错检查
- 267. Palindrome Permutation II
- oracle基本命令集合(3)--分组与统计
- 【Java EE 】--JavaServer Faces 01
- 位异或运算符^的特点及面试题
- DPCM编码