设计模式
cwjokaka
GitHub: https://github.com/cwjokaka
展开
-
设计模式_5:工厂方法模式
上次写的简单工厂模式:import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入你想要的运算(+ - *原创 2017-10-07 14:07:35 · 168 阅读 · 0 评论 -
设计模式_11:抽象工厂模式
场景:假设现在有一个专门操作mysql数据库user表的dao,可以对其进行插入和查询,,以下是代码:public class Main { public static void main(String[] args) { User user = new User(0, "Lisa"); MysqlUserDao mysqlUserDao = ne原创 2017-10-12 14:50:50 · 164 阅读 · 0 评论 -
设计模式_12:状态模式
创建一个Hero类,有一个方法work可以根据当前实例的体力(power)和是否过于疲倦(isTired)来做出不同的反应:public class Main { public static void main(String[] args) { Hero hero = new Hero(100, false); hero.work();原创 2017-10-13 14:42:46 · 167 阅读 · 0 评论 -
设计模式_21:中介者模式
书上的原句:中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。一个例子:如果中国和美国之间的交涉通过联合国机构间接转发,而不是面对面的交涉,那么代码可以写成这样:public class Main { public static void main(String[] args) {原创 2017-10-23 12:54:14 · 156 阅读 · 0 评论 -
设计模式_22:享元模式
书上的原句:享元模式:运用共享技术有效地支持大量细粒度的对象。栗子来了:我们写了一个网站,现在要把这个产品卖给不同的用户,但为了节省资源,我们可以把相同类型的网站公用一个服务器和数据库,而不用重新购买服务器和申请多个域名了(也就是不用重复new同类别的对象)。import java.util.HashMap;import java.util.Map;public class原创 2017-10-24 18:32:43 · 227 阅读 · 0 评论 -
设计模式_13:适配器模式
有4个角色:美国人、英国人、中国人、中译英的翻译官,让美、英、中三人分别说一句英语,假设中国人不会说英语(即没有实现说英语的接口),那么他就只能依靠翻译官来帮忙了:public class Main { public static void main(String[] args) { IEnglish american = new American();原创 2017-10-16 16:05:07 · 164 阅读 · 0 评论 -
设计模式_14:备忘录模式
我们玩单机RPG游戏的时候,通常会在打Boss前存个档,方便输掉的时候直接读取进度,这就是典型的备忘录模式:public class Main { public static void main(String[] args) { GameRole hero = new GameRole(); RoleStateCaretaker roleSt原创 2017-10-16 17:29:52 · 172 阅读 · 0 评论 -
设计模式_23:解释器模式
书上的原句:解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。原创 2017-10-25 12:43:00 · 190 阅读 · 0 评论 -
设计模式_15:组合模式
将对象组合成属性结构以表示'部分-整体'的层次结构组合模式使得用户对单个对象和组合对象的使用具有一致性import java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args) { Company topCompa原创 2017-10-17 15:11:13 · 207 阅读 · 0 评论 -
设计模式_24:访问者模式
书上的原句:访问者模式:表示一个作用在某对象结构中的各元素的操作,它使你可以再不改变各元素的类的前提下定义作用于这些元素的新操作一个例子:我们先用最简单的多态来实现一个动物的行为:public class Main { public static void main(String[] args) { Animal bird = new Bird();原创 2017-10-26 16:38:23 · 167 阅读 · 0 评论 -
【设计模式】之六大设计原则
原文http://geek.csdn.net/news/detail/249046在软件开发中有很多的设计模式,也有一些很高冷,谈谈我对软件设计的理解,以及让一些设计原则接地气。了解设计模式的朋友们,想必都听说过“六大设计原则”吧。其实最经典的 23 种设计模式中或多或少地都在使用这些设计原则,也就是说,设计模式是站在设计原则的基础之上的。所以在学习设计模式之前,很有必要对这些设计转载 2017-12-21 20:57:23 · 278 阅读 · 0 评论 -
设计模式_25:动态代理模式
之前写过一篇关于代理模式的文章设计模式_4:代理模式,但那时写的是静态的代理模式。本篇用两种方法来实现动态代理:JDK动态代理和CGLib动态代理。我个人的理解:动态代理和静态代理的区别是代理类不需要程序员来写,程序会自动生成代理对象。这样做的好处是不必为每个类都写一个代理类,一个代理类可以代理多个类。还是拿静态代理模式文章里的做值日为例子先写一个做值日的接口:publ原创 2018-02-01 00:08:52 · 310 阅读 · 0 评论 -
设计模式_20:责任链模式
书本的原句:使多个对象都有几乎处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条连传递改请求,直到有一个对象处理它为止。例子:一个员工请假或申请加薪需要先后通过小经理=》大经理=》最大的boss的审核,只有在最大boss审核通过后,申请才算生效:public class Main { public static void main(Stri原创 2017-10-20 14:41:56 · 207 阅读 · 0 评论 -
设计模式_3:装饰者模式
假设现在要写一个类似游戏里面的装备系统,角色可以装备上各种道具,可以写出以下模型:public class Main { public static void main(String[] args) { Person person = new Person("小明"); person.wearCloth(); person.wearGu原创 2017-10-05 14:48:54 · 140 阅读 · 0 评论 -
设计模式_16:迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。当你需要对聚集进行多种方式遍历时,可以考虑用迭代器模式;import java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args) {原创 2017-10-17 17:39:03 · 167 阅读 · 0 评论 -
设计模式_6:原型模式
有时需要生成多个相同的对象,最普通的方法就是就是用相同的属性new相同的对象: public class Main { public static void main(String[] args) { Chicken chicken1 = new Chicken(10, 'f', "Tom", 100); Chicken chicken2 = new C原创 2017-10-08 15:21:09 · 178 阅读 · 0 评论 -
设计模式_7:模板方法模式
两个人要做两张相同的试卷试卷,初步代码:public class Main { public static void main(String[] args) { TestPaperA testPaperA = new TestPaperA(); testPaperA.question_one(); testPaperA.question原创 2017-10-09 17:37:35 · 174 阅读 · 0 评论 -
设计模式_8:外观模式
如果需要从数据库的一个表的某条信息复制到另一个表里,可以先写出初步代码:public class Main { public static void main(String[] args) { Dao1 dao1 = new Dao1(); Dao2 dao2 = new Dao2(); //从数据库一个表中读取数据 S原创 2017-10-09 22:03:58 · 143 阅读 · 0 评论 -
设计模式_9:建造者模式
在纸上画两个人,初步代码:public class Main { public static void main(String[] args) { //画一个男孩 System.out.println("small-body"); System.out.println("small-head"); System.out.原创 2017-10-10 12:40:49 · 203 阅读 · 0 评论 -
设计模式_1:简单工厂模式
假设现在有一个需求:写一个简单的计算器,可实现加减乘除运算,开始我们凭第一感觉可能会直接写成这样:import java.util.Scanner;public class Main { public static void main(String[] args) { System.out.println("请输入你想要的运算(+ - * /):");原创 2017-10-03 11:26:46 · 177 阅读 · 0 评论 -
设计模式_10:观察者模式
观察者(Observer)模式又称为发布订阅模式(Publish/Subscribe),如果一个对象改变时需要通知其他对象,那么就可以用观察者模式解决。一个简单的例子:顾客订阅了卖家,以后卖家有什么新消息(优惠活动、打折什么的)就可以找到并通知给顾客了:import java.util.ArrayList;import java.util.List;public class Main原创 2017-10-10 16:24:07 · 561 阅读 · 0 评论 -
设计模式_2:策略模式
现在出现了一个需求,编写一个超市收银台软件,可以根据商品的价格统计出消费者应付金额,先来没头脑的一顿操作:import java.util.Scanner;public class Main { private static double total = 0; public static void main(String[] args) { Scann原创 2017-10-03 16:23:16 · 182 阅读 · 0 评论 -
设计模式_18:桥接模式
书上的原句:桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。public class Main { public static void main(String[] args) { Mobile nokia = new Nokia(); Mobile iphone = new IPhone(); Software原创 2017-10-19 14:27:48 · 167 阅读 · 0 评论 -
设计模式_17:单例模式
单例模式:保证一个类仅有一个实例,比提供一个访问它的全局访问点(原书)举个例子:例如计划生育,每对夫妇只能有一个孩子:public class Main { public static void main(String[] args) { Children children_1 = Children.getInstance(); Children原创 2017-10-18 14:30:11 · 163 阅读 · 0 评论 -
设计模式_19:命令模式
书上的原句:命令模式:将一个请求封装为一个对象从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。拿一个烧烤店的例子来说://客户端public class Main { public static void main(String[] args) { Barbecuer barbecuer = new原创 2017-10-19 17:23:01 · 164 阅读 · 0 评论 -
设计模式_4:代理模式
这里说的是静态代理模式,想看动态代理模式可以移步来这篇博文:设计模式_25:动态代理模式假如今天轮到我做班里的值日,那么代码可以这样写:public class Main { public static void main(String[] args) { Me me = new Me(); me.doDuty(); }}interface D...原创 2017-10-06 17:41:37 · 236 阅读 · 0 评论