
设计模式
文章平均质量分 68
Simplezeng
这个作者很懒,什么都没留下…
展开
-
策略模式(一)
学习的设计模式是通过《HeadFirst设计模式》书籍,并且沿用书中的例子进行实践,这本书真的很有意思,希望大家有时间可以进行阅读,吸收书中的精华。外面下着雪,适合学习。案例一:鸭子 阐述:开发者多采用OO思想进行编程,鸭子会游泳,会叫,但是长相确实不相同的。所以采用OO设计思想就采用了继承。package com.zl.strategy.one;public abstract clas...原创 2018-03-17 11:21:26 · 148 阅读 · 0 评论 -
工厂模式(二)
一个重要的提醒:在设计模式中,所谓的“实现一个接口”并“不一定”表示“写一个类”并用implement关键词来实现某个Java接口。“实现一个接口”泛指“实现某个超类型(可以是类或接口)的某个方法”。书中例子继续~~~书中要开加盟店,并且Pizza要加入当地的风味,但是仍然要沿用主店的做法手艺(即沿用主类不变的东西,扩展可变的东西)再来回顾上一篇代码:package com.zl.factory....原创 2018-03-24 23:56:38 · 205 阅读 · 0 评论 -
工厂模式(一)
每一瓶香水,最后都逃不过沦落成空气清新剂的命运。~~~学习工厂模式之前先来看书中引用的例子:披萨店~~~ 在编写一段代码的时候需要进行分离可变与不变的部分,这样才能很好的维护代码。对修改进行关闭,对扩展进行开放。Pizza orderPizza(String type){ Pizza pizza; if(type.equals("cheese")){//此处为可变区域,应该移到其他类中 ...原创 2018-03-24 22:47:57 · 249 阅读 · 0 评论 -
装饰者模式(二)
收入这么少,我哪需要那么多支付方式?~~接下来正式开始编写书中的案例了,虽然基本都是书中的代码,不过写写运行一下也很不错的饮料,调料,咖啡类型类图如下:首先编写一个抽象类package com.zl.decorate.one;public abstract class Beverage { public String description="不知名的咖啡";//这里已经给descript...原创 2018-03-24 18:59:50 · 163 阅读 · 0 评论 -
装饰者模式(一)
白领们中午四处乱窜找午饭吃,一家家小饭馆都贴着初九以后才开张。所以白领确实是社会底层,就连路边卖早点的都没开始上班。(每天中午真的不知道吃啥,心酸~~~)这章利用书中的例子进行学习,等以后熟悉了,再次深入探究。要进行开一家咖啡店,首先需要建立一个接口类:Beverage 每种咖啡都有属于自己的描述和价钱(每一种咖啡用的调料不一样,因此价钱不一样)那么问题来了,如果一个店有上千种咖啡,岂不是要实现上...原创 2018-03-24 17:49:04 · 261 阅读 · 0 评论 -
观察者模式(三)
夜幕下蹲守猎物的青蛙,突然看见一个萤火虫冒出,马上伸长舌头将其拿下。。。而后破口大骂:是哪个缺德的家伙弹烟头了?(摘抄~~默默心疼下青蛙舌头)本节主要是摘抄书中的知识总结,主要为了留存,以后就不用去看书了。回忆一下概念:观察者模式:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。(MVC)观察者和可观察者之间用松耦合方式结合,可观察者不知道观察者的细...原创 2018-03-18 14:08:27 · 158 阅读 · 0 评论 -
观察者模式(二)
“怎样优雅地表达着凉拉肚子了?”“你是无意穿堂风,偏偏孤倨引山洪 (摘抄~~画面太恶心了)本节讲述的是:使用Java内置的观察者模式(java.util下的Observable)Observable类和我们上文定义的GuildWolfOne类类似,并且提供了其他方法。package java.util;public class Observable { private boolean ...原创 2018-03-18 13:49:10 · 168 阅读 · 0 评论 -
观察者模式(一)
医学院的外科老师给同学讲解什么是无菌什么是干净,老师说:你把一坨屎放在高压锅里蒸一个刻钟,它就是无菌的了,但是它干净不干净呢?真是服了这个老师,好有才。(摘~~)观察者模式:定义对象之间一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。书中阐述的例子是报纸订阅服务:出版者 就是一:出版者更新数据,马上立刻通知订阅者订阅者 就是多:订阅者即为观察者,获取消息。订阅者可...原创 2018-03-17 23:13:47 · 216 阅读 · 0 评论 -
策略模式(三)
A对B说:“你是猪。”B说:“我是猪,才怪。”于是人们都叫B猪才怪。有一天,B怒了,大叫一声:“我不是猪才怪!!!!!”(摘抄~~)设计原则三:多用组合,少用继承。上文中将两个类结合使用,即为组合(Duck类,QuackBehavior类)。鸭子的行为不是继承来的,而是和适当的行为“组合”来的组合建立系统具有很大的弹性,不仅可将算法封装成类,更可以“在运行时动态地改变行为”。策略模式:定义了算法族...原创 2018-03-17 16:27:51 · 144 阅读 · 0 评论 -
策略模式(二)
东方不败希望自己可以文武双全,既能够快意江湖,又可以学富五车,于是改了个名,叫做东方快车。(摘抄的~~)软件开发一个不变的真理就是:CHANGE 改变 问题归零:继承不能解决问题,因为鸭子的行为在子类里不断地改变,并且让所有的子类都有这些行为是不恰当的。设计原则一:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起 把会变化的部分取出并“封装”通过观察...原创 2018-03-17 16:06:27 · 141 阅读 · 0 评论 -
工厂模式(三)
设计原则:(依赖倒置原则)要依赖抽象,不要依赖具体类。在应用工厂方法之后,高层组件(PizzaStore)和低层组件(就是具体的披萨类型)都依赖了Pizza这个抽象类。1.变量不可以持有具体类的引用。(使用如果new,就会持有具体类的引用。)2.不要让类派生自具体类。(如果派生自具体类,你就会依赖具体类了)3.不要覆盖基类中已实现的方法。(如果覆盖基类已实现的方法,基类就不是一个真正适合被继承的抽...原创 2018-03-25 16:04:30 · 231 阅读 · 0 评论