23种设计模式
慕嘉谊
这个作者很懒,什么都没留下…
展开
-
23种设计模式(13)策略模式(Strategy模式)
把具体的算法实现从业务逻辑中剥离出来,成为一系列独立算法类,使得它们可以相互替换 1、创建接口 //攻取西川的策略 public interface IOccupationStrategyWestOfSiChuan { public void occupationWestOfSiChuan(String msg); } 2、创建接口的三个实现 //攻取西川的上上计策 public cl...原创 2019-05-30 12:00:54 · 157 阅读 · 0 评论 -
23种设计模式(11)组合模式(Composite模式)
组合模式,就是在一个对象中包含其他对象,这些被包含的对象可能是终点对象(不再包含别的对象),也有可能是非终点对象(其内部还包含其他对象,或叫组对象),我们将对象称为节点,即一个根节点包含许多子节点,这些子节点有的不再包含子节点,而有的仍然包含子节点,以此类推 public class TreeNode { private String name; privat...原创 2019-05-29 12:09:38 · 121 阅读 · 0 评论 -
23种设计模式(10)桥接模式(Bridge模式)
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了 1、定义一个接口 public i...原创 2019-05-29 11:53:41 · 116 阅读 · 0 评论 -
23种设计模式(9)外观模式
外观模式是为了解决类与类之家的依赖关系的,降低了类类之间的耦合度,该模式中没有涉及到接口 1、创建多个类 public class CPU { public void startup(){ System.out.println("cpu startup!"); } public void shutdown(){ ...原创 2019-05-29 11:42:42 · 100 阅读 · 0 评论 -
23种设计模式(8)代理模式
代理模式和装饰模式代码很类似,但目的是有区别的 代理模式,注重对对象某一功能的流程把控和辅助。它可以控制对象做某些事,重心是为了借用对象的功能完成某一流程,而非对象功能如何。 装饰模式,注重对对象功能的扩展,它不关心外界如何调用,只注重对对象功能的加强,装饰后还是对象本身。 设计模式本身是为了提升代码的可扩展性,灵活运用即可,不必生搬硬套,非要分出个所以然来,装饰器模式和代理模式的区别即是如此。 ...原创 2019-05-29 11:11:40 · 111 阅读 · 0 评论 -
23种设计模式(7)装饰模式(Decorator模式)
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例 1、创建一个接口 public interface Sourceable { public void method(); } 2、创建一个被装饰类 public class Source implements Sourceable { @O...原创 2019-05-29 10:47:53 · 127 阅读 · 0 评论 -
23种设计模式(6)适配器模式(Adapt模式)
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式 一、类的适配器模式 有一个Source类,拥有一个方法,待适配,目标接口是Targetable,通过Adapter类,将Source的功能扩展到Targetable里 1、创建一个Source类,包含method1()方法 2、...原创 2019-05-29 10:41:47 · 293 阅读 · 0 评论 -
23种设计模式(5)原型模式(Prototype模式)
该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。实际上就是实现Cloneable接口,重写clone()方法 1、实体类 public class Prototype implements Cloneable{ private String name; public String getName() { return nam...原创 2019-05-28 16:00:04 · 129 阅读 · 0 评论 -
23种设计模式(4)建造者模式(Builder模式)
建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节 以肯德基套餐为例 1、产品角色 创建一个产品类Meal public class Meal { private String food; private String drink; public String getFood() { ...原创 2019-05-28 15:10:51 · 302 阅读 · 0 评论 -
23种设计模式(16)迭代器模式(Iterator模式)
类似Collection中的Iterator,创建next()方法和hasNext()方法,遍历集合原创 2019-05-31 10:38:05 · 137 阅读 · 0 评论 -
23种设计模式(3)单例模式(Singleton模式)
单例对象能保证在一个JVM中,该对象只有一个实例存在 单例模式分为懒汉式和饿汉式 一、懒汉式 只有当第一次调用创建对象的方法时才会创建对象 public class Singleton { private static Singleton singleton = null; //限制产生多个对象 private Singleton(){ } ...原创 2019-05-28 14:29:15 · 109 阅读 · 0 评论 -
23种设计模式(2)抽象工厂模式
1.创建两个接口A,B 2.为两个接口各创建两个实现类 3.创建一个工厂接口 4.为工厂接口创建一个实现类,类中有两个方法,分别能创建接口A和接口B的实现类 抽象工厂模式是工厂方法模式的加强版,具体区别: 工厂方法模式: 只有一个抽象产品类,具体工厂类只能创建一个具体产品类的实例 抽象工厂模式: 有多个抽象产品类 ,具体工厂类能创建多个具体产品类的实例 ...原创 2019-05-28 14:00:49 · 67 阅读 · 0 评论 -
23种设计模式(1)工厂方法模式(Factory Method模式)
简单工厂模式如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则。因此用到了工厂方法模式,创建一个工厂接口和创建多个工厂实现类,一旦需要增加新的功能,直接增加新的工厂类,不需要修改之前的代码。 1.提供一个接口 public Interface Sender() { public void send(); } 2.提供两个实现类 public class MailSender implem...原创 2019-05-28 13:47:07 · 131 阅读 · 0 评论 -
23种设计模式(0)简单工厂模式
一、普通 1.首先,创建一个接口 public interface Sender { public void Send(); } 2.其次,创建两个接口的实现类 public class MailSender implements Sender { public void Send() { System.out.println("this is Ma...原创 2019-05-28 12:00:33 · 168 阅读 · 0 评论 -
23种设计模式(15)观察者模式
当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系 1、创建一个观察者接口 public interface Observer { public void update(); } 2、为接口创建两个实现类 public class Observer1 implements Observer { public void ...原创 2019-05-30 14:16:07 · 135 阅读 · 0 评论 -
23种设计模式(14)模板方法模式(Template Method)
a.模板方法模式封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。 b.它在父类中提取了公共的部分代码,便于代码复用。 c.部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。 1、创建一个父类抽象类,部分方法为抽象方法,父类抽象类就是模板 2、创建子类继承抽象类,实现抽象方法。针对不同的需求创建不同...原创 2019-05-30 12:12:59 · 118 阅读 · 0 评论 -
23种设计模式(12)享元模式
主要用于减少创建对象的数量,以减少内存占用和提高性能 1、首先创建一个抽象类 public abstract class Shape { public abstract void draw(); } 2、然后是一个绘制图像的具体类 public class Circle extends Shape{ private String color; public Circle(...原创 2019-05-29 14:00:34 · 80 阅读 · 0 评论