设计模式
不羁朔风
但行好事,不问前程
展开
-
单例模式(java实现)
单例模式通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个最好的方法就是,让类自己负责保存它的唯一实例,通过把构造器私有,可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法.public class Singleton {private static Singleton instance;private Singleton() {}翻译 2017-11-29 13:59:25 · 118 阅读 · 0 评论 -
装饰者模式(java实现)
装饰者模式当我们需要把所需的功能按正确的顺序串联起来进行控制,可以使用装饰者模式,它动态地给一个对象添加一些额外的职能,就添加功能来说,它比生成子类(例如之前利用继承实现计算器的例子)更加灵活public abstract class Component {public abstract void operation();}public class ConcreteCompon翻译 2017-11-28 09:21:45 · 3005 阅读 · 0 评论 -
里氏代换原则
里氏代换原则里氏代换原则:子类型必须能替换掉它们的父类型.只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正的被复用,而子类也能够在父类的基础上增加新的行为.比如说,猫类继承动物类,动物类拥有吃喝叫跑等行为,当某一天,我们需要狗,牛,羊也拥有类似的行为,由于它们都是继承于动物,所以除了更改实例化的地方,程序的其他处不需要修改.Animal animal =new Cat翻译 2017-11-28 09:20:51 · 137 阅读 · 0 评论 -
开放封闭原则
开放封闭原则开放封闭原则:软件实体(类,模块,函数等)应该可以扩展,但是不可修改.开放封闭的原则是说,在设计时,时刻要考虑,尽量让类足够好,写好了就不去修改,如果新需求来,增加一些类来解决,原来的代码能不动就不动.但是绝对的对修改关闭是不可能的.无论模块是多么封闭,都会存在一些无法对之封闭的变化.既然不可能对其完全封闭,设计人员必须对于他设计的模块应该对哪种变化封闭做出选择.他必须猜测出最翻译 2017-11-28 09:18:15 · 909 阅读 · 0 评论 -
单一职责原则
单一职责原则单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因.就一个类而言,应该仅有一个引起它变化的原因,当我们编程的时候,很自然地给一个类添加各种各样的功能,比如我们写一个窗体应用程序,一般会创建一个Form1这样的类,于是我们把各种各样的代码,像某种商业运算的算法呀,像数据库访问的sql语句呀,都写到Form1这样的类中,这就意味着,无论任何需求要来,你都需要更改这个翻译 2017-11-28 09:17:03 · 189 阅读 · 0 评论 -
策略模式
策略模式//根据单价和数量计算总价public class Charge {public static double getTotalPrice(double unitPrice, int number) {double totalPrice = 0;totalPrice = unitPrice * number;return totalPrice;}pu翻译 2017-11-28 09:16:08 · 196 阅读 · 0 评论 -
工厂方法模式(java实现)
通过封装,继承,多态把程序的耦合度降低,使用设计模式使得程序可维护,可复用,可扩展,灵活性好(传统印刷术的问题在于把所有文字刻在同一版面上造成耦合度过高所致----可维护:只需更改要改之字;可复用:字并非用完就无用,可以在后面的印刷中重复使用;可扩展:文章要加字,只需要另刻字加入即可;灵活性好:只需要将活字移动就可以满足排版要求) 实现一个计算机小程序:public class Fac翻译 2017-11-28 09:12:56 · 413 阅读 · 0 评论 -
中介者模式(java实现)
中介者模式世界需要和平由于各国之间代表的利益不同,所以矛盾冲突是在所难免的,联合国组织由各国的代表组成,用来维护国际和平与安全,它就是一个调停者,中介者的角色.国与国之间的关系,就如同不同的对象与对象之间的关系,这就要求对象之间需要知道其他所有的对象,尽管将一个系统分割成许多对象通常可以增加其可复用性,但是对象之间相互连接的激增又会降低其可复用性了.这是因为大量的连接使得一个对象不可能在没翻译 2017-11-30 16:32:26 · 1460 阅读 · 0 评论 -
享元模式(java实现)
享元模式原始代码public class Website {private String name;public Website() {}public Website(String name) {this.name=name;}public void use() {System.out.println("网站分类: "+name);}public翻译 2017-11-30 16:33:13 · 321 阅读 · 0 评论 -
代理模式(java实现)
代理模式需求:华华想追蒙蒙却不好意思,就拜托昆昆去送礼物没有代理的代码public class Pursuit {private SchoolGirl mm;public Pursuit(SchoolGirl mm) {this.mm=mm;}public void giveDolls() {System.out.println("送你洋娃娃");}pu翻译 2017-11-28 09:22:38 · 276 阅读 · 0 评论 -
模板方法模式(java实现)
模板方法模式(抽取)public class TestPaper {public void question1() {System.out.println("question1");}public void question2() {System.out.println("question2");}}//学生A抄的试卷,带答试题和答案public class翻译 2017-11-28 09:23:57 · 183 阅读 · 0 评论 -
组合模式(java实现)
组合模式如果把北京总公司比作一个大树的话,它的下属分公司就是这棵树的分枝,至于各办事处是更小的分支,而它们的相关职能部门由于没有分枝了,可以理解为树叶.尽管天下没有相同的树叶,但是同一棵树上长出来的树叶样子也不会相差到哪去.也就是说,若使总部的财务管理功能复用于子公司,最好的办法是,处理总公司的财务管理功能和处理子公司的财务管理功能的方法是一样的.组合模式:将对象组成树形结构,以表示”翻译 2017-11-29 13:58:24 · 243 阅读 · 0 评论 -
备忘录模式(java实现)
备忘录模式 public class GameRole {//生命力private int vitality;//攻击力private int attack;//防御力private int defense;public int getVitality() {return vitality;}public void setVitality(int v翻译 2017-11-29 13:57:30 · 909 阅读 · 0 评论 -
适配器模式(java实现)
适配器模式适配器模式:将一个类的接口转化为客户希望的另一个接口,使得原本因为接口不兼容而不能一起工作的那些类可以共同工作.何时使用适配器模式:希望复用一些现存的类,但是接口和复用环境的要求不一致,可以通过适配(类似于电源适配器,可以把220V电压转化为可以使用的电压),两个类所做的事情相同或者类似,但是具有不同的接口时,可以使用它,由于类共享同一接口,客户代码统一调用同一接口,这样更简单,翻译 2017-11-29 13:56:30 · 164 阅读 · 0 评论 -
状态模式(java实现)
状态模式工作时,上午状态好,中午想睡觉,加班苦煎熬;其实这是一种状态的变化,不同的时间,会有不同的状态.原始代码public class Work1 {private int hour;private boolean finish=false;public boolean isFinish() {return finish;}public void setFin翻译 2017-11-29 13:55:25 · 1950 阅读 · 0 评论 -
观察者模式(java实现)
观察者模式(发布订阅模式)蒙蒙是公司秘书,华华和昆昆是公司职员(股票观察人),他们经常在上班期间看股票,如果被老板看到,后果很严重的.所以蒙蒙会在老板回来之前通知他们.public class Secretary {//同事列表private ListStockObserver>stockObservers=new ArrayListStockObserver>();//通翻译 2017-11-29 13:54:37 · 222 阅读 · 0 评论 -
建造者模式(java实现)
建造者模式(生成器模式)(10)建造者模式:将一个复杂对象的构建(指挥者类)和它的表示(测试类)相分离,使得同样的构建过程可以创建不同的表示.如果我们使用了建造者模式,那么用户只需指定需要建造的类型(具体建造者类的引用,或者其向上转型后的引用)就可以得到它们,而具体的建造过程和细节就不用知道了.//产品类, 由多个部件组成public class Product {privat翻译 2017-11-29 13:53:16 · 391 阅读 · 0 评论 -
外观模式(java实现)
外观模式股民炒股代码public class Stock1 {public void buy() {}public void sell() {}}public class Stock2 {public void buy() {}public void sell() {}}public class Stock3 {public void buy() {}翻译 2017-11-29 13:52:37 · 517 阅读 · 0 评论 -
迪米特法则
迪米特法则在公司工作,自己的电脑出毛病了.是去IT部找主管,让主管给你分配维修人员呢?还是直接找维修人员呢?如果直接找维修人员,他可能正好在忙,这样不好.主管代表抽象类和接口,维修人员是具体的类,符合前面所讲的依赖倒转原则(面向接口编程,不要面向实现编程)也满足迪米特法则(最少知识原则):如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用.如果一个类需要调用另一个类的某一个翻译 2017-11-28 09:24:56 · 148 阅读 · 0 评论 -
什么是MVC模型(你以为的mvc真的是你以为的吗)
MVC即Model-View-Controller,也就是模型-视图和控制器模型层主要用来实现系统中的业务逻辑,例如可以用javaBean实现,用来接收视图的请求数据,并返回最终的处理结果javabean规范:1.必须是一个公共的具体的类 public class2.提供私有的字段 private String id;//id称之为字段3.提供公共访问字段的方法 get|s...原创 2018-11-06 11:48:53 · 766 阅读 · 0 评论