找回密码
 注册
关于网站域名变更的通知
查看: 279|回复: 1
打印 上一主题 下一主题

Unix编程相关接口

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-1-16 11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
最小立异原则7 ~6 M6 c0 }* Z5 \$ B: p3 ?5 R
8 h4 H$ i! _- e9 d; G- ?) \

' l' ^6 }$ \$ c     如有可能,尽量允许用户将接口功能委派为熟悉的程序来完成
3 c& V6 ^5 Z6 N+ l8 |$ O
     不能委派时,那就效仿
( Z" L1 G+ z( `% h

3 u0 y; p' C$ _- Z" C7 ?6 S接口设计评估# ]0 G( J; u& S) l& k# |9 E

; g4 D" S2 e- y( x$ j; P6 j6 @9 c6 d' Z) z/ }2 V7 o, V. X2 J
     简洁:          一个事务处理需要的动作时间及复杂度需要较低的上限
' g& F$ S7 V( ^& y$ j6 I3 x) N     表现力:       接口可以触发相当广泛的行为
- ^" A$ ?- f- I8 C7 V5 H; K     易用:          易用性同要求用户需要记忆的东西成反比  W1 F. m8 T* e
     透明:          用户在使用接口的时候,几乎没有什么问题、数据或程序的相关状态需要记忆
0 g; K( v" _9 O6 l) }  d     脚本化能力:很容易被其他程序调用
3 M- \- @, B  N4 E* ?' A' x4 o4 S! x9 e3 [) l: w
; O. L% A4 V6 s0 f5 f, w
CLI和可视接口之间权衡3 A) [, ]0 d- F6 K
$ ^  }" y. q! m

) P+ p* Z' w8 T5 d: C( T: O4 e     CLI:丰富的表现力,高度的脚本化能力,易用性低(需要费劲的记忆),透明度通常也较低
, Y/ W/ W& l" ^/ N" G" i. e
! M1 P- Y" I+ ^
( f* B6 r8 C" @+ u1 |     GUI:易用,不能脚本化,处理规模大的问题需要机械性重复操作& {) E$ d( A5 g5 U! {7 Q

$ ~3 Y2 k4 e# j' b6 U, ~5 Z8 \8 w
' O7 g8 G9 c5 m# F0 U: J     长远来看,为了既能服务一般用户,又能服务有经验用户,最好两种接口都提供。9 m$ M  A) x/ i
& m8 M0 ~1 ~% V$ u5 \  C8 s

. ^0 q0 l5 z8 y( [2 [, V; hUnix接口设计模式4 f3 ]! S6 l4 V& O- |7 N) w

* _) k) K! R& _! m3 O$ v( C6 [
1. 过滤器模式
) O. q! R1 X5 w( ^7 F4 Z& I
) e3 k8 U6 @2 v$ P2 N) \4 w5 g1 }/ D) Q5 Q& e+ m. |

( K4 u8 Z( Z, V1 ^4 k3 }* a, X程序接受标准输入,转换为某种格式后,再输出到标准输出。过滤器是非交互的。
& p/ [# T& T& Z9 E: |' ?
  D2 y) C: N2 g* z' B$ e& d$ Q8 K
6 ^+ p1 ~; ?* q* H# E, R) P4 ~! h" n实例:grep,tr
# d" L* a0 d/ g" @* @9 e( V  e8 I/ X/ T7 A( w7 ~% U! J8 W

# ]# h2 @  Y; \; ]0 t原则:Postel原则,宽进严出;过滤的时候,不需要的信息也绝不丢弃;不增加无用数据。
$ n; \* O+ O8 R9 @; i5 H
9 ?% K) N. u9 F' d$ k& I1 @& {. S3 M8 w, O% x
2. Cantrip模式, Y2 M* o4 t# _

9 A+ J$ V, p1 B. Q* m/ a6 A! @$ {. T5 C/ Q, i( u
程序没有输入,没有输出,只被调用一次,产生退出状态码。程序的行为只由启动条件来控制。+ C/ |" G5 ]& k* O  P

! c1 k6 y9 G7 n1 s. q$ b, }
6 _% |6 Q7 o8 |6 ~2 k& }实例:clear,touch9 H; K. j2 \* ?# }5 E" N
0 d8 B) V/ i* K

& ]. @$ r1 @* a; |% y& S3. 源模式- b6 Z& g1 \9 }, y" `* y

. z& p0 p7 c5 G7 v  M& o7 j" @- v* R3 Z4 ?/ B! _* h
程序不需要输入,输出由启动条件决定2 d6 M9 \4 K$ j& g+ g9 T

$ u  J$ P7 Y6 I* C" i# ?& J" t( I' Z- r
实例:ls,ps,who& q+ _4 ~; `% N) T9 ~! x1 f
9 l! s6 x  a# J5 p- ]

# c5 D( x5 w8 H3 y9 r. W4. 接收器模式
+ E9 S. t) P0 h1 k. w% u* W
9 w6 \2 F, r* k0 B3 N* X6 h4 \" d- L, W' A+ W
程序只接纳标准输入,而不产生标准输出。对输入的行为由启动条件决定。
, v- O6 \" i% n& b+ i1 t. O  D( w) y( V6 b: T5 D" X

% O2 B, f2 }% B实例:lpr1 `2 \1 N/ g  W

& P  X( E. O0 C; T6 m/ ^. _  c) ]. I5 e* N: M, b
5. 编译器模式+ L6 I7 {* i( C3 [. \

9 K7 k* S- T4 t2 c$ w1 f/ ], a9 r
程序既没有标准输入,也没有标准输出,但是会将错误发到标准错误端。7 O% J+ I0 J3 ?0 ]

5 c. ^1 }$ U# R1 e( z, t- y* |* X9 G# H% e2 _9 g) {
实例:gcc,gif2png,gzip/ u. r6 B' _. f9 {! u

- k2 h- J: p8 c. {, F8 t2 C4 \5 A
6. ed模式' [1 o5 o  V' q; d9 P

" d; Q- C6 Y/ z, E! `4 n2 T
- m" w/ ?0 b3 a& ]( s: U程序具有很强的交互性。/ i  V  N* x" d* a" [+ h

5 M; M' o) R" K+ P1 e
. j) b) D1 k" B实例:gdb,ftp,sh
+ ]; q" z  [: [! `8 Y1 U4 U- e& }, j. E; V5 C$ P% K
6 z  M# ~8 @7 w; R. f
7. Roguelike模式
$ s! j7 l- d" F# P" u  D: ~; [: h; k3 m9 t) {
* F) x; z, b% d" u3 B4 K/ f  O" h
运行在控制台的全屏、可视界面风格,但使用字符阵列显示,而非图形和鼠标界面。2 C# q. {2 A: P3 j- c! T6 O6 L/ M

5 L5 ^" U6 h6 B: C6 t8 l; L4 R4 S$ f9 X& |9 F' d
实例:vim,emacs, D+ q9 V) W9 x; k1 a5 x% X6 l0 M

$ z7 h+ e8 u1 f: r$ \
2 L# g- X7 d/ Q" ]/ r+ ^9 F8. 引擎和接口分离模式
: L: O! [! m8 q
, I; ]! l& a. `( S  c. o) Q1 p' o0 r. q
8 ]2 l+ c% O0 Q模型、视图、控制器模式
( L/ z+ C& r: f9 R/ \
  B# P# Y0 v5 n. b( Z9 i9 A3 o
# B- v$ M8 L3 Z- u几个变种:配置者/执行者组合(fetchmail/fetchmailconf),假脱机/守护进程组合(at/atd, lpr/lpd),驱动/引擎组合,客户端/服务器组合
9 I5 o  ?' }5 }5 y$ R
7 q9 L: ]0 ~0 {/ B. w3 G
! i% O/ b0 L* k1 Y2 u4 b+ H9. CLI服务器模式% s" D- A) m' U( n* m$ M

) g/ M" |+ Y7 V0 \& j8 z9 j, d$ Y; T3 c' A" p% s: s4 o
程序以前端模式出发时,有一个简单的CLI界面读取标准输入并写标准输出;以后台方式运行时,将stdin和stdout连接到专门的TCP/IP端口。; x+ I/ a  K# n9 f0 ?( A; G
% X+ Q, p8 \" f/ C- o2 [  V

4 U" a9 J/ V/ y: I实例:POP, IMAP, SMTP, HTTP1 \  ~5 T" `  n& K& t

2 Z3 _% @- o& V$ x9 O  S/ E& `
3 C  T$ g: }* J  [: \6 h10. 基于语言的接口模式( K) |" V5 o( C7 u( _6 r( {
$ d8 Y. M6 U6 g! g9 R$ ], H, k3 d

8 E& r  |7 k. u' e; N6 lGUI前端同CLI微型语言后端结合,程序往往拥有一个的内嵌脚本语言。
7 v0 L5 f  d! o1 j! w7 O( z+ N: s  z" B+ G' y

  \7 \. W2 ~2 b4 D0 f, f. Q% P2 |' L- O
+ |' j% W5 T1 X
5 V  ~1 u& v! U4 S  Z4 `网页浏览器作为通用前端* [* x, D; b3 X! d8 A

3 d6 ~7 L1 `1 l! b4 o; v0 e
3 Y6 o* W" x, P% Q( Q+ Y3 i
0 I" D0 R$ {4 _8 `# ~4 m# L
% @: R  U& g- \8 f/ o沉默是金:喋喋不休的程序往往不能跟其他程序很好的合作,用户屏幕的纵向空间是宝贵的,垃圾信息对用户带宽的无谓消耗。,- H- k4 n  B" Y9 j# E2 H/ g
" t2 s- t! \, W3 P* t' p9 ?

; b. d8 R: ~3 [长时间的操作要提供进度条。& N# C' k- [+ a

7 k6 i1 v8 r/ T; [) n+ k

该用户从未签到

2#
发表于 2020-1-16 19:40 | 只看该作者
Unix编程相关接口
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-26 04:17 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表