go学习笔记之万万没想到宠物店竟然催生出面向接口编程?雪之梦技术驿站

A:猫是一种宠物,淘气可爱会卖萌,看家本领抓老鼠,偶尔还会喵喵喵.B:狗是一种宠物,忠实听话能看家,嗅觉灵敏会破案,一言不合汪汪汪.C:我想要买一个宠物,文能卖萌,武可退敌,明个一早给我送来吧!

这则故事很简单,但同时也暴露出一个问题,那就是在这场交易中,卖家实际上亏了,明明只是想买一个宠物,结果却买了两个!

当然,在上篇文中最后也给出了解决方案,那就是将猫和狗进行抽象封装,共性的部分提取成宠物,个性的部分才是猫和狗.

如此一来,顾客买宠物时要么买的是猫,要么面对是狗,具体买的是什么宠物是由顾客自己根据各自宠物的个性决定的,一定程度上解决了交易不公平的问题.

让我们再简单回忆一下继承的实现过程,回忆的过程中不妨思考一下继承有没有没能解决的问题

typePetstruct{}func(p*Pet)Skill(){fmt.Println("能文能武的宠物")}猫是宠物,还是能抓老鼠的宠物.typeCatstruct{p*Pet}func(c*Cat)Catch(){fmt.Println("老鼠天敌喵喵喵")}狗是宠物,还是能认路导航的宠物.typeDogstruct{p*Pet}func(d*Dog)Navigate(){fmt.Println("自带导航汪汪汪")}某一天,C要能文能武的宠物,最好还可以顺便抓个老鼠,于是C选择了喵喵喵!

funcTestExtendInstance(t*testing.T){p:=new(Pet)c:=new(Cat)c.p=p//老鼠天敌喵喵喵c.Catch()//能文能武的宠物c.p.Skill()}过了一阵子,C觉得猫除了抓老鼠别的什么都不会,别人遛狗,我遛猫

于是,想要一种能自带导航功能的宠物,毫无疑问的是,选择了狗.

funcTestExtendInstance(t*testing.T){p:=new(Pet)d:=new(Dog)d.p=p//自带导航汪汪汪d.Navigate()//能文能武的宠物d.p.Skill()}上述示例,简而言之就是通过组合的方式实现了面向对象中的继承特性,解决了猫和狗除了是宠物还是自己的问题.

面对猫和狗两种宠物,顾客犯了选择困难症,于是第一次全盘照收买下了两种宠物,吃了一次哑巴亏.

后来在市场监督的介入下,利用面向对象的继承特性,用Go语言实现了猫和狗的个性化与宠物的共性化,从此像C一样的顾客再也不会面临选择困难症,每一次都要根据独特的需求,最终选择某一种宠物,要么是猫,要么是狗.

不知过了多久,这种相安无事的场景最终被一群急性子的顾客所打破,这一天宠物市场一大早就来一大批人,一上来就吵吵嚷嚷说快给我们一批宠物,我们要作为抽奖活动的奖品,一定要快一点!

谁知道销售人员不紧不慢地说:"别着急,我们这里的宠物有很多种,有猫,有狗,有兔子,有金鱼,有乌龟,有蜗牛..."

"别整那些虚头巴脑的,我只要宠物,赶紧给我宠物就行,别尽扯没用的",顾客吵吵说.

果然是一群急性子的顾客,还没等销售人员介绍完各个宠物的差异性亮点直接被打断了.

宠物市场吵吵闹闹引来了市场监督人员的注意,顾客和商家均向官方诉苦,期望能给出一个解决办法!

市场监督人员心想:商家和顾客原本和谐相处的,今天怎么会吵闹起来

仔细听了事情来龙去脉,双方都没有过错,看来还真的是市场赶不上实际需求的变化,真得尽快研究新的解决办法才行啊!

原本吵吵嚷嚷的市场顿时冷却了不少,毕竟谁也不敢违抗市场老大的命令,众人只得悻悻而去,期待三天后的重新开市.

"现在的顾客到底是怎么了,连自己到底想要什么都搞不清楚,还急冲冲地跑来买宠物,自己都不知道要买啥,鬼才知道呢!",资历老练的继承经理抱怨道.

"经理说得对,他们自己都不知道到底想要啥宠物,怎么能埋怨商家太罗里吧嗦呢人家那么卖力介绍宠物的特点,不也是帮助顾客更好的选择嘛!",发言的是继承经理的小弟.

"..."

"咳咳,我理解大家的心情,继承项目组确实在解决宠物问题上立下了很大功劳,大家为他们抱不平也是情理之中的事情,过去的就让他过去吧!当务之急,还是要解决现实问题!",主席首先安抚前几位激动情绪,又挑出重点提醒在场的各位回归到主题的讨论上,不要再揪住过去的功劳簿.

"猫和狗明明已经是宠物了啊,难道不可以直接卖给顾客吗为啥还要提供新机制"

"猫和狗虽然是宠物,但对于用户来说,这种宠物有点浪费了,用户实际使用到可能只是宠物的功能,并不会用到也不能用到具体宠物的功能,所以对用户来说,这就是一种浪费."

"哦哦,明白了,这就像是顾客需要的宠物是能卖萌的,是要送给女朋友作为礼物的,并不关心这个宠物能不能抓老鼠.所以对于抓老鼠的技能就是没用的,而买家却要为抓老鼠的技能额外买单,这对于买家来说并不公平!"

经过一番激烈的讨论,大家基本上达成一致,先前存在的继承模型确实有些不足,不能适应快速变化的市场,过于强调差异性而非共性.

这样就导致无法满足急性子顾客批量购买的需求,所以需要提供类似于继承那种抽象的概念来表达某种约定,只要满足这种约定的动物就是宠,不管是猫还是狗,哪怕是玩具也行!

透过现象看本质,从纷繁冗杂的事务中抽象出精简的模型是各个编程语言都必不可少的一个环节,Go语言当然也不例外.

面向对象编程中的继承概念表达是一种上下级的抽象关系,也就是说某一个封装对象是从属于特定上级的封装对象,默认拥有该上级的行为方法,这里的上级概念就是父类就是对所有子类共性的抽象实现.

明明我仅仅需要一滴水,你却给了我整个海洋!

本来,真正需要的可能只是父类的某一个方法,你却提供给我一个具体的子类实现,这个子类不但拥有目标方法还有很多的其他方法.

既然有这么多的附加价值,你说浪费不浪费,销售时可不得涨价吗,这样不相当于捆绑销售了嘛!

所以,我们需要对继承的概念进一步抽象,使这种抽象达到一种极致状态以至于只存在非常少量的行为方法,凡是继承自这种极致抽象的子类都是它的子民.

为了之后讨论方便,业界将这种抽象到极致的继承关系称之为接口,虽然看似只是称呼的改变,但实际上思维方式上已经发生了翻天覆地的变化.

而接口的概念衍生于继承,只不过是这种抽象程度已经达到了一种不能再抽象的地步,所有子类都要有一个最终的父类,这个父类拥有最公共性的行为方法,所以这种极致的抽象也就无法体现出子类的共性行为的具体表现.此时这种极致的抽象没有太大的意义,是一种非常非常宽泛的概念,等于什么都没说,所以也适合绝大部分封装对象.

所以,干脆取消了极致抽象中对于行为共性的实现,转而仅仅定义共性的行为,具体这种行为到底如何表现,完全由具体子类自行决定.

这样做有两个显而易见的好处,一是解决了太宽泛概念等于没说的尴尬,同时保留了对共性行为的描述.二是将控制权转移到具体的子类实现,实现了体制内的个性化!

所以这种专业名词的转变背后是思维方式的转变,而接口更是很好地描述了这种转变的语义.

回忆一下生活总随处可见的USB数据线,对于计算机来说,对外暴露的是USB插口,行为描述是只要插入就能连接到电脑,能够同电脑进行沟通交流,这种交流可能是传递数据,也可能是连接电源等等不同的行为表现.

基于接口设计,USB数据线提供了访问电脑的能力,一端连着电脑,另一端连着手机,双方进行数据交换.有线鼠标的数据线也提供了访问电脑的能力,实现鼠标的左击还是又击都能反馈到电脑.

诸如此类的案例不胜枚举,生活中不缺少计算机哲学,缺少的只是我们的思考.

所以,如果让我来给这种机制进行命名的话,我可能会将其称呼为插口,意思是只要能适配指定的插口,那么就说满足插口要求,对外暴露的抽象概念是插口,真正的实现可能是数据线或者工具等.

当然,这只是我的一厢情愿,因为面向对象中这种机制叫做接口,满足接口的规范叫做实现了接口.

接口这种概念显得比较专业,提出这个概念的人估计也是厉害人物,基本上所有的面向对象语言中都采用了接口的概念,即使不是面向对象语言但支持面向对象编程风格的Go语言也采用了接口概念.

由此可见,接口的概念应该是通俗易懂,可移值性比较强的,获得了相当高的认可度.

在未来的某种需求继续发生改变时,可能还会产生新的概念,进而提出新的一套理论,到时候是面向需求编程还是面向思维编程亦或是面向搜索编程,那就就不得而知了.

聪明的读者,你们有什么看法呢

市场监督大会散会后,继承小组接受了设计接口的任务挑战.大会之所以推举继承小组领头,是因为与会人员一致认为继承小组在处理抽象概念上十分擅长,相信设计出接口这种机制也是可以的.

继承小组深感此次任务责任重大,任重而道远,一定要设计出接口概念才能不辜负参会人员的认可和领导的厚爱.

于是,继承小组内部在一起开了个会,会上大家畅所欲言谈谈自己的看法.

小王:"我觉得这种接口的概念是抽象的终极状态,我们可能没办法一下子到达终点,但是按照现有的理论应该可以逐步逼近终点."小李:"我也是有类似的感觉,抽象到什么程度才是终点呢拿什么判定这个抽象程度呢猫和狗到宠物的过程是一种抽象过程,我们先前也是基于此过程提出了继承的概念,解决了重复定义的问题.现在应该沿着这种思路继续抽象,直到小王说的那种接口概念."小张:"从猫和狗抽象到宠物,是封装对象的演进过程,顾客需要的不是具体的猫和狗,而是宠物.但是这个宠物直觉上感觉和原来继承中实现的宠物还是有点不一样啊"小王:"我也有同感,这次的宠物必须具备某种能力,只要是满足这种能力的,管他是猫还是狗或者是别的什么蜥蜴蟑螂的都是顾客眼中的宠物.所以这种宠物更加单一化,并不在乎有没有其他能力."

...

"等一下,我有疑问你怎么一会说需要,一会又说不需要,这不自相矛盾了吗",大家几乎不约而同举手示意经理.似乎早就料到这帮小子搞不懂其中缘由,经理故弄玄虚地回应说:"嗯嗯,我就知道你们会有疑惑,下面容我谈一下我的看法,你们听听看.”

如果站在接口的定义者角度上看问题,一旦发布了接口规范,子类肯定会屁颠屁颠满足接口约束,于是对外暴露时都是接口那一套理论,忽略了自己的特色.

统一了接口规范这种情况对于接口设计者最为方便,所有的控制权全部掌握在自己手中,一道命令即可号令群雄,莫敢不从,如若不从,轻则千夫所指,重则驱逐出境!

对于接口设计者来说,这些实现了接口的对象并没有什么不同,地球离了谁照样自转,随时随地想换就换.

但是对于接口的实现类来说,只要一收到天子诏令,立马无条件停下手上的活,熬夜加班也要满足新的接口规范,敢怒不敢言,除非是不想混了,哪怕怠慢了一步也会引发巨大的动荡!

所以说接口更改时,具体的实现类必须要随之改变以实现新的接口规范约束.

如果站在接口的使用者角度上看问题,是否实现接口应该是我的地盘我做主,是自主决定的事情,管你接口是否更改,老子爱实现就实现,不乐意实现就不实现!你奈我何我的王国我当家,尊你敬你你才是国王,把我们惹恼了,所谓的联合王国到时候只剩你这么一个孤家寡人去吧!

所以说接口更改时,具体的实现类不需要随之更改,想不想满足新的接口规范完全在于自己,并不是强迫的,不必立即实现新的接口规范.

真的是公说公有理婆说婆有理,既然如此,那么问题来了,Go语言选择是哪一种其他主流的编程语言又是选择哪一种的呢

先说其他主流的编程语言,这类编程语言大多是站在接口设计者角度出发,控制欲特别强,一言不合就报错,接口更新了实现类必须同步更新,违令者杀无赦!

这样有优点也有缺点,优点是皇帝一声令下,天下臣民莫敢不从,屡教不敢者,千夫所指,王国崩溃也不是没有可能!正是这种优点,换另外一种角度看就是缺点了,俗话说天高皇帝远,圣旨虽下但还没传达到边境要塞,那边监察御史就上奏你一本,说你怠政目无尊上,引发帝国动荡,罪大恶极,理应凌迟处死!

你说冤不冤,不管是朝令夕改还是焕然一新的改革,凡是曾经实现过接口的类都要实时更新,否则后果不堪设想.

真的是成也萧何败萧何,控制欲太强有利有弊.

所以,Go与众不同,选择了另一种思路来解决问题,放弃中央集权转向分封制,将权力下放给地方.

名义上还是由国王制定统一标准,由地方负责自主实施,具体如何实现标准完全是诸侯国自己的事情,万一哪天国王需要使用统一标准时,实现了该标准的诸侯王国都可以无障碍使用.

即使以后接口规范有变,旧的接口不再适合新时代要求,国王只需要制定了一套新的标准,昭告天下后,当诏令传到地方时,地方可以根据新的规范更新自己的实现类,万一消息闭塞或者不愿意立即更新,也没关系,王国不会崩溃,只不过需要使用新规范时,没有实现接口的地方自然是不能使用的.

因此,不论是集中制还是民主制,接口的规范都是自顶向下实施的,不同之处在于底下的人因各种原因没有实现新的接口规范时,集中制会直接崩溃而民主制依旧正常运行,仅此而已.

下面就演示一下两种思路的实现方式.

卖家首先定义到底什么是宠物这种接口.

publicinterfacePet{voidactingCute();}喵喵喵,人家能卖萌,就是宠物嘛,为啥还非得证明一下啊!

汪星人说,这年头自带卖萌天赋的猫咪都要通过专业认证才算是宠物,我也乖乖去认证宠物吧!

publicstaticclassDogimplementsPet{@OverridepublicvoidactingCute(){System.out.println("汪星人汪汪汪来卖萌");}}第二天,市场上又来了一群急性子的买家,一上来就要买宠物,管他是猫还是狗,并不在乎,只要是宠物就行.

publicstaticvoidmain(String[]args){Petp;p=newCat();//喵星人喵喵喵来卖萌p.actingCute();p=newDog();//汪星人汪汪汪来卖萌p.actingCute();}终于送走了这批顾客,卖家也舒了一口气,默默念叨着,市场监督那帮人真牛逼,竟然设计出接口的方案,只要是宠物,别管是猫还是狗,随便给一个都行,给这帮人点个赞!

首先定义接口规范,宠物一定要能卖萌,不然怎么讨得女神欢心

typePetinterface{ActingCute()}喵喵喵说我会卖萌啊,那我就是宠物啦!

typeCatstruct{}func(c*Cat)ActingCute(){fmt.Println("喵星人喵喵喵来卖萌")}汪汪汪说我也会卖萌,我也要给女神当宠物!

typeDogstruct{}func(d*Dog)ActingCute(){fmt.Println("汪星人汪汪汪来卖萌")}既然你们都会卖萌,对于直男来说这就够了,随便拿一个就行了,快点准备送礼物啦!

funcSendGift(pPet){p.ActingCute()}于是乎,既然买家并不在乎到底是猫还是狗,那就卖给他一个猫好了,于是小伙子打包了宠物准备送给女神.

可怜的小伙子跑去宠物店找卖家算账,气冲冲地质问卖家,卖家一脸毫不在意的样子,笑嘻嘻的说,小伙子想不想将功补过啊,这一次保准你能获得女神青睐.

只见,卖家这一次找来了一条宠物狗,打打包还放到原来的包装盒递给你小伙子.

funcTestActingCute(t*testing.T){varpPetp=new(Dog)//汪星人汪汪汪来卖萌SendGift(p)}我擦,还是原来的配方,有点担心,一样的包装这一次真的能讨得女神欢心,原谅自己吗

亲爱的读者,你们说呢,同样的配方不一样的味道,女神会原谅自己吗

不论是站在设计者角度上解决抽象问题还是站在使用者角度思考,两者的解决方案没有高低优劣之分,选用好恰当的应用场景就是最好的解决方案.

只不过这种选择往往不是开发者能左右的事情,因为这种底层的语言级别框架设计属于缔造者的工作,他们一旦觉得了一种模式,语言使用者很难改变,我们唯一能做的就是理解并使用罢了!

当站在接口设计者角度上时,接口的定义和具体实现类的关系就好比是集中制,皇帝一声令下,不管身处何处,天下臣民皆惟命是从,如有懒政懈怠者,千夫所指,立马崩溃.

当站在接口实现者角度上时,此时接口的设计者和具体实现者的关系是松耦合的,犹如分封制,国王一声令下,诸侯国可以听从差遣也可以抗旨不遵,对于整个王国而言并不会造成颠覆性混乱,诸侯国和国王更像是一种契约精神而不是隶属服从关系.

Go语言中的接口采用的就是后一种松耦合的关系,接口设计者和接口实现者是松耦合的,实现的关系也是隐式的,这也是另一种理论"鸭子模型"的体现.

好了,本文主要介绍了为什么要有接口设计的需求以及接口设计是怎么思考的,并简单介绍了Go是如何实现这种模型的.

下一节我们将真正开始介绍Go语言关于接口的设计,顺便讲解面向对象最后一个知识点---多态.

THE END
1.重大新消息!养狗或将面临高额税费,每年高达1.5万!狗狗征收污染...可能有人会反对,说这是 “抢钱”,但其实不然。高额税费就像一把高悬的 “达摩克利斯之剑”,能让养狗人时刻警醒。你想啊,要是因为没管好狗,一年 1.5 万就没了,谁不心疼?这样一来,狗主人自然会好好教育狗狗,管理它们的行为。 3、其实,收来的这些钱可不是进了黑洞。可以用它打造宠物友好城市,比如建专门...https://www.163.com/dy/article/JG826TDQ0556AB0Q.html
2.家里五六岁的母泰迪狗在几天前被放到宠物店了一整天他比较紧张,因为泰迪的智商比较高像你所描述的这种现象就是由于,当时,你把它扔在宠物店一天。https://m.120ask.com/askg/bd_detail/101857693
3.狗爸狗妈进来看另外,他们还必须拿出一大笔钱支付广告费用。三、职业规范。BREEDER的犬舍不是造狗的工厂,不可以大规模流水作业。优秀的BREEDER奉行精益求精、限量繁殖的原则,往往在五年繁育计划里,只繁育不超过十窝幼犬。在数量有限的犬只里,冠军犬、比赛犬因有广告和繁育价值,不会轻易出售,而宠物犬又卖不出好价钱,自然收入不丰。https://www.360doc.cn/article/2899157_107153134.html
1.误惹前夫,娇宠难停单从这句话不难读出两层隐藏的含义,第一便是嘴哥并没有因此受到多少影响,起码对比小杨哥来说,他有复出的可能,不过他的视频账号一直没有更新,这就说明三只羊目前还处于反省的状态,待到全部解封,那么三只羊旗下账号就会正式恢复更新。 据了解,每年我市均举办职工门球赛,比赛规模不断扩大。这一赛事为广大职工展现球...http://www.cqynny.com/birske538243.htm
2.宠物店营销策划书(通用12篇)有意从事宠物店或兽医院,建议店面找空档(亦即四周最好不要有同行),不必太大,70平米就足够了,但是地点很重要,最好是在人来人往的大马路上,不过,如此房租也会稍高,但客源轻易累积;反而是社区里要经营宠物店比较困难,也不尽理想,因为社区是属于封闭式的,客源有限,尤其在市场逐渐萎缩的现在,竞争本来就已经很激烈,...https://www.ruiwen.com/cehuashu/5098519.html
3.我和小狗之间的故事作文(精选119篇)我家有一条小白狗,它今年两岁了!这只小狗的来历,并不辉煌,但也不算是太烂。 当时,我出去散步时,发现受伤的鹦鹉。我看它可怜,就把它带回了家养了起来。伤好了以后,我偶然发现它的羽毛里有一张名片。这肯定是它主人的名片,我把它还给了主人。它的主人是宠物店的老板,为了感谢我,那个老板叫我随便在店里挑一...https://m.yuwenmi.com/zuowen/tuijian/2776932.html
4.还愿——人狗情未了“这个哈士奇是我们去年好像是12月份吧,反正那时候天气特别冷,有个宠物店跟我们联系,说这里有只狗狗,主人带它来问治疗这只狗的皮肤病多少钱,宠物店报了一下价格,具体多少钱我也不知道,然后主人就嫌贵,当时就不要它了,主人自己开车跑了。这只狗就去追,追了好久没追上,然后又返回到宠物店来,但是皮肤病这么严重...https://www.meipian.cn/2a8n5fwh
5.我是狗作文(精选40篇)说说最近的事吧。天热了,我来自北方,那里的冬天可比南方冷多了。可我的适应能力不强,天都热了,毛还是那么厚,就像夏天穿羽绒服,可是热死我了,看我一天上蹿下跳的样子,主人终于忍不住了,决定带我去剃毛。 主人牵着我,穿过大街小巷,来到一家宠物店。我跟着主人走了进去,看到了各种各样的狗:拉布拉多,金毛,腊...http://zuowen.yjbys.com/gou/4945076.html
6.猫咪寄养一天多少钱?揭秘宠物寄养费用的秘密论坛在繁忙的生活中,有时候我们会因为工作、出差或其他原因无法照顾自己的猫咪。这时候,寻找一个可靠的猫咪寄养中心就显得尤为重要。然而,面对市场上琳琅满目的寄养服务,价格却参差不齐,让人眼花缭乱。那么,猫咪寄养一天到底需要多少钱呢?本文将为您揭秘宠物寄养费用的秘密。 https://diqu.handanfc.com/11414.html
7.年末博弈新动向!新能源基金经理变消费股“调研劳模”宠物店驱虫多少钱可以住几天吗 , , HD性VideOS熟女法国 , , 又色又爽又黄高潮的免费视频 , , 欧美级婬片A片久久精品水中花毛 , , 乡野肉欲狂伦最新章节更新时间 , , 印度大乳熟女 , , futa人妖又大又粗 , , 老少配Ⅹ丰满老归 , , 穿成流放反派的早亡妻 , , 果冻传媒坠落人妻Cm91 , , take awa...http://www.fzfoods.net/product.php/n524-329.xhtml
8.我家的小狗作文700字(通用65篇)好像在说:“小主人,你要认真把作业写完,完成后和我你一起玩儿吧!”这就是我家的小白。 我家的小狗作文700字 篇4 今天,爸爸从外面工作回来给我和弟弟带了只小狗,我们高兴的心情难以形容,因为自从以前家里有过的那只狗不在了后,弟弟虽然年龄还小但至今都还记得以前那只全身洁白的小狗,所以我们一直都很想再有...https://mip.cnfla.com/zuowen/1148487.html
9.我想要一只小狗作文500字(通用73篇)它实在太脏了,我决定把它带到宠物店洗干净。它碰到水的时候都会发抖,用力想甩掉身上的水,好有趣!我无聊就拿了张报纸看。突然看到一篇寻狗启事,照片里狗狗带着的粉红色的皮链,上面还挂了个铃铛。和我找到的这只一模一样!我想那位丢了狗狗的人一定很着急。洗完以后,我就照着报纸上的地址把它送回去。开门的...https://www.unjs.com/zuowendaquan/youxiuzuowendaquan/4114604.html
10.宠物狗吃猫粮,可以吗宠物店京韵国际名犬中心宠物狗吃猫粮,可以吗 大家好,今天小编关注到一个比较有意思的话题,就是关于宠物可以吃猫粮吗的问题,于是小编就整理了5个相关介绍宠物可以吃猫粮吗的解答,让我们一起看看吧。 宠物猫必须吃猫粮吗 可以。如果不给猫咪喂食猫粮,那么需要根据猫咪的营养需求自己制作猫饭。但是自己做猫饭很难满足猫咪正常的营养需求,长期...https://www.jydogs.com/post/316210.html
11.我的狗狗在宠物店被美容师剃伤,店家没有收取费用,给了解决办法,但我...如狗狗伤口因宠物店处理不当而恶化,你有权要求赔偿。建议先与店家沟通,提供狗狗恶化的证据,如医院报告...https://www.66law.cn/question/47583869.aspx
12.关于小狗的童话故事(精选62篇)一天,狗卢比要去喝水,在喝水的同时,它的尾巴摇来摇去,一个不小心,把自己的尾巴勾到了爬犁,自己又跑了回去,只听到“啊”的一声尾巴被扯断了。 他想:“去找皮匠他因该会帮我缝上。” 卢比找到了皮匠说:“亲爱的皮匠先生,你能不能帮我把尾巴给缝上?” ...https://www.jy135.com/ertonggushi/tonghua/681273.html
13.狗狗的陪伴优秀作文(通用62篇)那次我去宠物店买东西,发现了两只超级可怕的.狗,它被拴在笼子里,但是叫个不停。我要买的东西就在它附近,所以只好慢慢接近,等我一转身,它那样可怕的双眼太吓人了,我东西都没那就走了!从此,我再也不碰狗了,就连“拉菲”也都给人了! 我的童年有这样的小狗陪伴我,也有这样的可怕的狗吓我…… ...https://www.fwsir.com/fanwen/html/fanwen_20200728181756_451767.html
14.作文小狗就算写作业时,我也会把它放在身边,晚上睡觉时,它也依偎在我身边。总之,只要我在家,它时时刻刻都会在我身边。 我喜欢我的小狗娃娃,我一定会继续爱惜它的。 我的心爱之物作文小狗300字(二) 我的心爱之物是一只小狗,它是我八岁生日时,我哥哥送给我的礼物。当时我一进宠物店就一眼看见了它,对它一见钟情,非...https://www.liuxue86.com/k_%E4%BD%9C%E6%96%87%E5%B0%8F%E7%8B%97/
15.宠物用品新品供应座式宠物饮水器小狗自动饮水器批发宠物店狗 成套自动喂食 否 品牌 洋洋 规格 260ML 箱装数量 60 材质 塑料 产地 浙江 宠物用品 新品供应座式宠物饮水器 小狗自动饮水器 批发宠物店 https://m.makepolo.com/product/100258050729.html
16.犬市场养狗知识大全:狗场养殖需要学习哪些知识?如何养狗常识请问养狗的常识养狗的常识 养狗知识大全超完整版 答:最该学的就是如何与你狗来沟通学会了这个,你的狗永远都是最可爱的! 养狗常识 答:一、准备宠物狗的用具:饲养宠物狗要准备一些必需用具,如狗舍、食盆、食盘、水碗、刷子、梳子、剃刀、电吹风等,还可准备一些宠物狗的玩具这些用具可以到宠物店...https://www.6gii.com/wenda/19984.html