03 2020 档案
摘要:概述 一个容器对象下拥有多个叶子对象,类似树形结构 模式实例 定义一个抽象类,它既可以代表叶子,也可以代表容器 public abstract class Component { public abstract void add(Component c); public abstract void
阅读全文
摘要:概述 如果要绘制矩形、圆形、椭圆、正方形,至少需要四个形状类,如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时有两种设计方案: 第一种:为每一个形状提供一套各种颜色的版本,使用继承的方法,如果有四种形状,十二种颜色,则需要四十八个类。如果要增加新形状,则同时也要具备所有的颜色 第二种:提
阅读全文
摘要:概述 我国的生活用电电压是 220V,而笔记本电脑、手机等电子设备的电压都没有这么高,这时候就需要电源适配器。有时,现有类所提供的接口不一定是用户所期待的,使用适配器可以对现有接口转化为客户期望的接口 适配器模式包含如下角色: Adapter(适配器类):对 Adaptee 进行适配 Adaptee
阅读全文
摘要:概述 单例模式可以保证系统中一个类只有一个实例而且该实例易于被外界访问 单例模式有三个要点: 某个类只能有一个实例 自行创建这个实例 自行向整个系统提供这个实例 因此,单例类必须有如下实现: 单例类的构造函数为私有 提供一个自身的静态私有成员变量 提供一个公有的静态工厂方法 模式实例 public
阅读全文
摘要:概述 有时候需要多次创建某一类型对象,为了简化创建过程,可以只创建一个对象,然后再通过克隆的方法复制出多个相同的对象 深克隆与浅克隆 通常情况下,一个类包含一些成员对象,在使用原型模式克隆对象时,根据其成员对象是否也克隆,原型模式可分为两种形式:深克隆和浅克隆 浅克隆:被复制对象的对象成员变量具有与
阅读全文
摘要:概述 建造者模式用于创建一个包含多个组成部分的复杂对象,可以返回一个完整的产品对象给用户,比如汽车拥有车轮、方向盘、发送机等各种部件,用户几乎不会单独使用某个部件,而是使用一辆完整的汽车 模式实例 套餐是一个复杂对象,一般包含主食(如汉堡、鸡肉卷等)和饮料(如果汁、可乐)等组成部分。不同套餐有不同的
阅读全文
摘要:概述 抽象工厂模式比工厂方法模式抽象程度更高。工厂方法模式中具体工厂只生产一种具体产品,但在抽象工厂模式中,具体工厂可以生产相关的一组具体产品,这样一组产品称为产品族 有时候我们需要一个工厂提供多个产品对象,而不是单一一个产品对象,如一个电器设备工厂,它可以生产电视机、电冰箱、空调等设备,而不只是生
阅读全文
摘要:概述 工厂方法模式是简单工厂模式的延伸,在工厂方法模式中,工厂父类负责定义产品对象的公共接口,而子工厂模式负责生成具体的产品对象 模式实例 之前的简单工厂统一生产所有品牌的手机,这次为每种品牌的手机提供一个子工厂,使具有更好的灵活性和可扩展性 抽象产品类 Phone public abstract
阅读全文
摘要:概述 有时我们需要创建一些来自于相同父类的类的实例,为此可以专门定义一个简单工厂类来负责创建这些类的实例,这些被创建的实例具有共同的父类 模式实例 某手机厂专为各手机品牌生产手机,调用工厂的方法时传入参数,则根据传入的不同参数返回不同品牌的手机 在这里手机为父类,各品牌手机则为子类 抽象手机类 Ph
阅读全文