分类 设计模式 中的文章

设计模式分类

看懂UML类图和时序图 从一个示例开始 类之间的关系 时序图 附录 创建型模式 简单工厂模式(静态工厂方法模式)(不在创建型里面) 工厂方法模式 抽象工厂模式 单例模式 建造者模式 原型模式 结构型模式 适配器模式 桥接模式 装饰模式 外观模式 享元模式 代理模式 行为型模式 命令模式 中介者模式 观察者模式 状态模式 策略模式 ……

阅读全文

创建型模式

创建型模式 1.简单工厂模式(静态工厂方法模式) 2.工厂方法模式 3.抽象工厂模式 4.建造者模式 5.单例模式 6.原型模式 1.简单工厂模式(静态工厂方法模式) 作用:当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。 应用场景:Java加解密 (解密)获取不同加密算法的密钥生成器: KeyGenerator keyGen=KeyGenerator.getInstance("AES"); (加密)创建密码器: Cipher cp=Cipher.getInstance("AES","BC"); 2.工厂方法模式 作用:当需要加入新产品时,对原有产品无需改动,只需要新增一个抽象工厂和具体产品就可以了。 主要角色: 抽象工厂(Abstract Factory) 具体工厂(ConcreteFactory) 抽象产品(Product) 具体产品(ConcreteProduct) 应用场景:JDBC中的工厂方法 比如加载不同厂商的数据库驱动 Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=DB;user=;password="); Statement statement=conn.createStatement(); ResultSet rs=statement.executeQuery("select * from UserInfo"); 3.抽象工厂模式 4.建造者模式 作用:将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变,但每一部分是可以灵活选择。 优点 封装性好,构建和表示分离。 扩展性好,各个具体的建造者相互独立,有利于系统的解耦。 客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不对其它模块产生任何影响,便于控制细节风险。 主要角色 Builder:抽象建造者 Concrete Builder:具体建造者 Director:指挥者 Product:产品角色 应用场景StringBuilder.append源码 public StringBuilder append(boolean b) { super.……

阅读全文

结构型模式

结构型模式 1.适配器模式 2.装饰器模式 3.代理模式 4.外观模式(门面模式) 5.桥接模式 6.组合模式 7.享元模式 1.适配器模式 定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种。 类结构型模式适配器 对象结构型模式适配器 优点: 客户端通过适配器可以透明地调用目标接口。 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。 主要角色: 目标接口(Target):当前系统业务所期待的接口,它可以是抽象类或接口。 适配者类(Adaptee):它是被访问和适配的现存组件库中的组件接口。 适配器类(Adapter):它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。 实现: 类适配器: //目标接口 interface Target { public void targetMethod(); } //适配者类 class Adaptee { public void adapteeMethod() { System.out.println("适配者中的业务代码被调用!"); } } //类适配器类 class ClassAdapter extends Adaptee implements Target { public void targetMethod() { adapteeMethod(); } } //客户端代码 public class ClassAdapterTest { public static void main(String[] args) { System.……

阅读全文

行为型模式

行为型模式 1.策略模式 2.责任链模式 3.模板方法模式 4.观察者模式 5.迭代子模式 6.命令模式 7.备忘录模式 8.状态模式 9.访问者模式 10.中介者模式 11.解释器模式 1.策略模式 定义:定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。 解决问题:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。将这些算法封装成一个一个的类,任意地替换。 主要角色: 抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现。 具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现。 环境(Context)类:持有一个策略类的引用,最终给客户端调用。 实现: //抽象策略 public interface Strategy { public int doOperation(int num1, int num2); } //具体策略 public class OperationAdd implements Strategy{ @Override public int doOperation(int num1, int num2) { return num1 + num2; } } //Context上下文 public class Context { private Strategy strategy; public Context(Strategy strategy){ this.……

阅读全文